当前位置: 首页 > 面试题库 >

无法在不同的Spring Boot应用程序的不同端口上启动2个嵌入式active-mq

汪高岑
2023-03-14
问题内容

我有2个spring-boot应用程序。每个应用程序都有嵌入式活动mq代理。

我需要在同一台PC上并行运行2个应用程序,但现在不起作用。第一个应用程序始终成功启动:

2018-02-02 11:48:20.095  INFO 7660 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@53045c6c: startup date [Fri Feb 02 11:48:20 MSK 2018]; root of context hierarchy
2018-02-02 11:48:20.923  INFO 7660 --- [  JMX connector] o.a.a.broker.jmx.ManagementContext       : JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:7777/jmxrmi
2018-02-02 11:48:20.923  INFO 7660 --- [           main] o.apache.activemq.broker.BrokerService   : Using Persistence Adapter: KahaDBPersistenceAdapter[D:\work\arbitrage_robot\root\activemq-data\localhost\KahaDB]
2018-02-02 11:48:21.231  INFO 7660 --- [           main] o.a.a.store.kahadb.MessageDatabase       : KahaDB is version 6
2018-02-02 11:48:21.260  INFO 7660 --- [           main] o.a.a.store.kahadb.plist.PListStoreImpl  : PListStore:[D:\work\arbitrage_robot\root\activemq-data\localhost\tmp_storage] started
2018-02-02 11:48:21.395  INFO 7660 --- [           main] o.apache.activemq.broker.BrokerService   : Apache ActiveMQ 5.15.2 (localhost, ID:ntkachev-60101-1517561301266-0:1) is starting
2018-02-02 11:48:21.441  INFO 7660 --- [           main] o.a.a.t.TransportServerThreadSupport     : Listening for connections at: tcp://127.0.0.1:61617?broker.persistent=false
2018-02-02 11:48:21.442  INFO 7660 --- [           main] o.a.activemq.broker.TransportConnector   : Connector tcp://127.0.0.1:61617?broker.persistent=false started
2018-02-02 11:48:21.442  INFO 7660 --- [           main] o.apache.activemq.broker.BrokerService   : Apache ActiveMQ 5.15.2 (localhost, ID:ntkachev-60101-1517561301266-0:1) started
2018-02-02 11:48:21.442  INFO 7660 --- [           main] o.apache.activemq.broker.BrokerService   : For help or more information please see: http://activemq.apache.org
2018-02-02 11:48:23.002  INFO 7660 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2018-02-02 11:48:23.021  INFO 7660 --- [           main] o.s.c.support.DefaultLifecycleProcessor  : Starting beans in phase 2147483647
2018-02-02 11:48:23.024  INFO 7660 --- [           main] o.a.activemq.broker.TransportConnector   : Connector vm://localhost started
2018-02-02 11:48:23.051  INFO 7660 --- [           main] pack.Application                 : Started Application in 3.337 seconds (JVM running for 3.922)

但第二次冻结并打印:

2018-02-02 11:48:30.450  INFO 17008 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@53045c6c: startup date [Fri Feb 02 11:48:30 MSK 2018]; root of context hierarchy
2018-02-02 11:48:31.296  INFO 17008 --- [           main] o.apache.activemq.broker.BrokerService   : Using Persistence Adapter: KahaDBPersistenceAdapter[D:\work\app\root\activemq-data\localhost\KahaDB]
2018-02-02 11:48:31.297  INFO 17008 --- [  JMX connector] o.a.a.broker.jmx.ManagementContext       : JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
2018-02-02 11:48:31.300  INFO 17008 --- [           main] o.a.activemq.store.SharedFileLocker      : Database activemq-data\localhost\KahaDB\lock is locked by another server. This broker is now in slave mode waiting a lock to be acquired

这两个应用程序的配置大致相同:

@SpringBootApplication
public class Application {

  @Bean
  public BrokerService broker() throws Exception {
    BrokerService broker = new BrokerService();
    broker.addConnector("tcp://localhost:61616?broker.persistent=false");
    return broker;
  }

  @JmsListener(destination = "robotCommand")
  public void listen(String in) {
      System.out.println(in);
  }

以及以下依赖项:

   <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-kahadb-store</artifactId>
        <version>5.15.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-broker</artifactId>
        <version>5.15.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-activemq</artifactId>
        <version>1.5.10.RELEASE</version>
    </dependency>

我该如何解决(应用程序在启动时挂起)?


问题答案:

您的配置broker.addConnector("tcp://localhost:61616?broker.persistent=false");错误,仅当您使用ActiveMQConnectionFactory,http://activemq.apache.org/how-
do-i-embed-a-broker-inside-a-
connection.html#HowdoIembedaBrokerinsideaConnection-

创建代理时,才能完成此操作使用ActiveMQConnectionFactory

Using ActiveMQConnectionFactory
An embedded broker can also be created using an ActiveMQConnectionFactory and using a vm connector as a uri. e.g.
ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");

尝试

 @Bean
  public BrokerService broker() throws Exception {
    BrokerService broker = new BrokerService();
    broker.addConnector("tcp://localhost:61616");
    broker.setPersistent(false);
    return broker;
  }


 类似资料:
  • 我刚刚开始学习 React.js并使用“创建 React 应用程序”制作了两个项目。 现在,如果我想同时启动两个项目,我不能,因为默认情况下,两个项目都在端口3000上启动。 有没有什么方法可以将其中一个的默认端口更改为其他类似http://localhost:3001的端口,并同时运行它们? 注意:我是Windows用户

  • 问题内容: 我正在尝试将我的node.js应用程序(带有express和mongoose)部署到openshift上,但我无法这样做。该应用程序可以在我的本地环境中完美运行。 我的入口是文件/ bin / www 我将它作为package.json文件中此行的openshift入口点 我已经确保按照指南使用环境变量设置mongodb连接,如下所示: 我得到的错误是: 这对我来说很奇怪,因为我没有在

  • 创建了新文件夹,该文件夹是独立文件夹的副本。 将我的war文件放入文件夹standalone1/deployments/“war file Played here” 然后用bin文件夹中的standalone1.sh复制并重命名standalone.sh。 尝试运行以下命令“sudo nohup./standalone1.sh”来启动standalone1.sh 服务器未启动, 有人能帮忙吗?

  • 我正在我的应用程序中开发通知,我对即将到来的意图有一些问题,这让我抓狂。 正常流程:我的应用程序有启动程序活动(活动A,单顶),它显示一个飞溅,然后启动活动B(单顶也是)。 通知:当应用程序在后台时,我在通知栏上显示一个通知,当单击时,它会通过PendingIntent打开应用程序的启动器活动。这个PendingIntent地址为活动A(SingleTop)。但是在这个场景中,它没有打开活动A,而

  • 我正在使用create-react-app开发ReactJS应用程序。 npm start和npm run build应用程序工作正常,该应用程序运行在端口号为4000或pushstate-server build的端口9000,问题是我需要在公共url(如http://sample/home/)中运行没有端口号的构建应用程序,当我直接浏览build/index.html时,它正确显示了主页,但路

  • 我的程序编译了所有内容,我没有出错,但我实际上期望tomcat应该永久在端口8080上。输出中也没有Spring。在另一个项目中,我做的一切都很好。谢谢你帮助我。 我的父母: 我的tarter.class: 我的Starter-Pom: 控制台输出: 然后什么都不会发生了。谢谢你的帮助。