如何在应用程序之间交换信号?

时间:2015-03-30 12:34:29

标签: java spring

我有两个未连接的应用程序。一个是在数据库上执行业务逻辑和CRUD的主应用程序。

第二个应用程序会定期重建数据库缓存(长时间运行)。我想在重建开始时向主应用程序发送一个信号,当它完成时,主应用程序应该在重建时采取特定的操作。

我怎样才能使用spring-boot获得最佳效果?

2 个答案:

答案 0 :(得分:1)

使用spring-boot,只需添加active-mq依赖项即可使用jms。

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jms</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-broker</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-pool</artifactId>
    </dependency>

在yml配置中,您将在一个应用程序中启动amq jms代理,而不是完全指定broker-url,因为spring.activemq.in-memory属性默认为true(http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html) 或者像这样配置:

activemq:
    broker-url: failover:(vm://localhost:61616?connectionTimeout=3000)

并从其他应用程序(如此

)连接到它
activemq:
    broker-url: failover:(tcp://machineoftheotherapplication:61616?connectionTimeout=3000)

您可能需要考虑是否需要使用持久可靠传递的消息,这意味着如果您发送消息而其他应用程序未运行,则会在重新启动后收到消息。

答案 1 :(得分:0)

如果您的应用程序使用http请求,您可以添加一个特殊的控制器来处理来自第二个应用程序的请求。 另一种选择是JMX请求。 但是,应考虑安全性。