代码缝合 2024-03-17 14:44 采纳率: 22.2%
浏览 9
已结题

Java微服务问题求解

微服务项目(飞机航行)
1上游服务(类似于指挥部)给我发消息(mq)告诉我何时起飞(我是飞机)并且会给我规划航线 航线为一个集合 比如从 起始点a 飞到结束点d 中间经过 a b c d这四个点 ,还有个任务是在某个点停留十五分钟 在这十五分钟内要频繁给引擎发探测的指令
2.我主要做的事是把我当前位置的a的经纬度与下一个点的经纬度b 拿到这两个经纬度去调用python的模型 然后他会给我规划这两个点之间具体应该怎么飞 他会给我返回一些数据。
3.我拿着模型给我反的数据去调用另一个模型(引擎) 通过(mq)给引擎发消息 他在经过运算返回给我一些信息 他是一条一条发的类似于for循环 等我接收到这个消息之后我把这个数据实时返回给前端,并发送mq消息给指挥部
问题:我该怎么实现这个功能,和用什么技术,还有就是当从a到b走完了 我如何在调模型 把当前坐标(b)和c的的坐标接着传给模型和引擎 继续下一步这样直到把所有给我规划的路线走完,还有一个问题是我如何手动创建xxl-job任务 实现代码形似的创建定时任务并启动在springcloud项目中

  • 写回答

16条回答 默认 最新

  • 关注

    代码缝合 下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    针对你提出的问题,以下是实现功能的解决方案以及推荐的技术栈:

    1. 实现接收上游服务的消息并规划航线

      • 使用消息队列(MQ)来接收上游服务发来的消息,如ActiveMQ、RabbitMQ等。
      • 在接收到消息后,解析航线集合,并根据其中规定的停留时间频繁发送探测指令给引擎。
    2. 调用Python模型进行飞行规划

      • 使用Java调用Python模型,可以使用jni4net、Py4J等方式进行Java和Python的交互。
      • 将当前位置经纬度和下一个点的经纬度作为输入参数传递给Python模型。
      • 调用Python模型后,获取返回的飞行规划数据。
    3. 与引擎进行消息通信

      • 使用MQ与引擎进行通信,在经过计算后,引擎向你发送一条消息。
      • 你接收到引擎的消息后,实时将数据返回给前端,并通过MQ向上游服务发送消息。
    4. 依次按照规划的路线飞行

      • 在每个航线点到达后,获取当前点的坐标并传递给下一个点和引擎进行下一步的飞行规划。
      • 确保在每个航线点到达后,调用Python模型和引擎进行相应的计算和通信。
      • 循环以上过程,直至所有给定的路线都被飞行完毕。
    5. 手动创建xxl-job定时任务

      • 使用xxl-job作为任务调度中心,实现定时任务的创建和启动。
      • 在项目中引入xxl-job的依赖,并进行相应的配置,包括在application.properties或application.yml中配置xxl-job的地址和与调度中心的连接。
      • 在具体的任务类中,使用@XxlJob注解定义任务,并实现相应的业务逻辑。
      • 在启动类中,添加@EnableXxlJob注解启用xxl-job。

    以下是一个示例代码,展示如何使用xxl-job创建定时任务并启动:

    @RestController
    public class JobController {
    
        @PostMapping("/addJob")
        public String addJob() {
            XxlJobInfo jobInfo = new XxlJobInfo();
            jobInfo.setJobGroup(1);
            jobInfo.setJobCron("0/10 * * * * ?");
            jobInfo.setAuthor("admin");
            jobInfo.setExecutorRouteStrategy("FIRST");
            jobInfo.setExecutorHandler("yourJobHandler");
            jobInfo.setExecutorBlockStrategy("SERIAL_EXECUTION");
            jobInfo.setGlueType("BEAN");
    
            boolean success = XxlJobAdminTemplate.addJob(jobInfo);
            if (success) {
                return "Job added successfully!";
            } else {
                return "Failed to add job...";
            }
        }
    }
    

    请确保在pom.xml文件中引入xxl-job的依赖,如:

    <dependency>
        <groupId>com.xuxueli</groupId>
        <artifactId>xxl-job-core</artifactId>
        <version>2.3.0</version>
    </dependency>
    

    这是一个简单的示例,可以根据你的具体业务需求进行修改和扩展。

    综上所述,你可以采用以下技术栈来实现你的需求:

    • 消息队列:ActiveMQ、RabbitMQ等
    • Java和Python交互:jni4net、Py4J等
    • 任务调度中心:xxl-job
    • 框架:Spring Cloud

    希望以上解决方案能对你有所帮助。如果还有其他问题,请随时追问。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月19日
  • 赞助了问题酬金15元 3月17日
  • 创建了问题 3月17日

悬赏问题

  • ¥25 使用cube ai 导入onnx模型时报错
  • ¥15 关于#微信小程序#的问题:用一个网页显示所有关联的微信小程序数据,包括每个小程序的用户访问量
  • ¥15 root的安卓12系统上,如何使apk获得root或者高级别的系统权限?
  • ¥20 关于#matlab#的问题:如果用MATLAB函数delayseq可以对分数延时,但是延时后波形较原波形有幅度上的改变
  • ¥15 使用华为ENSP软件模拟实现该实验拓扑
  • ¥15 通过程序读取主板上报税口的数据
  • ¥15 matlab修改为并行
  • ¥15 大数据应用基础专业问题
  • ¥20 数据分析出错了,希望有能人看看,解决一下
  • ¥15 尝试访问%1服务的windows注册表时遇到问题。必须先解决此问题,然后才能运行安装过程。(请确认您正在使用管理员权限运行)373