gpt4 book ai didi

java - Apache Camel,在服务器启动和停止时发送消息

转载 作者:行者123 更新时间:2023-12-01 13:52:36 27 4
gpt4 key购买 nike

我有一个使用 JAVA DSL 的简单的camel MINA 服务器,并且我的运行方式与此处记录的示例类似:

当前,该服务器从队列接收报告,更新它们,然后将它们发送到下一个服务器。一个非常简单的代码:

public class MyApp_B {

private Main main;

public static void main(String... args) throws Exception {
MyApp_B loadbalancer = new MyApp_B();
loadbalancer.boot();
}

public void boot() throws Exception {
main = new Main();
main.enableHangupSupport();

main.addRouteBuilder(
new RouteBuilder(){
@Override
public void configure() throws Exception {
from("mina:tcp://localhost:9991")
.setHeader("minaServer", constant("localhost:9991"))
.beanRef("service.Reporting", "updateReport")
.to("direct:messageSender1");

from("direct:messageSender1")
.to("mina:tcp://localhost:9993")
.log("${body}");
}
}
);

System.out.println("Starting Camel MyApp_B. Use ctrl + c to terminate the JVM.\n");
main.run();
}
}

现在,我想知道是否可以做两件事:

  1. 使该服务器在开始运行时向主服务器发送消息。这是一条“Hello”消息,基本上包含该服务器的信息。
  2. 当我按 CTRL+C 关闭主服务器或执行其他操作时,告诉主服务器忘记他。

我也读过这篇文章:

从技术上讲,通过重写 doStart 和 doStop 方法,我应该获得预期的行为,但是,这些方法(特别是 doStop 方法)根本不起作用。

有办法做到这一点吗?如果是的话怎么办?如果没有,我有什么选择?

提前致谢,佩德罗。

最佳答案

代码毕竟可以正常工作。问题是我的IDE,Eclipse。当使用终止按钮时,Eclipse 只是终止进程而不是向其发送 CTRL+C 信号。此外,Eclipse 似乎无法向在其控制台上运行的进程发送 CTRL+C 信号。

我还在 Eclipse 的官方论坛上创建了一个讨论:

希望有一天它可以帮助那些与我情况类似的人。

关于java - Apache Camel,在服务器启动和停止时发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19857945/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com