溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ActiveMQ(四)——四、用ActiveMQ構(gòu)建應(yīng)用

發(fā)布時(shí)間:2020-07-19 02:56:01 來(lái)源:網(wǎng)絡(luò) 閱讀:395 作者:mazongfei 欄目:編程語(yǔ)言

一、多種啟動(dòng)Broker的方法

  • broker:相當(dāng)于一個(gè)ActiveMQ服務(wù)器實(shí)例
  • 命令行啟動(dòng)參數(shù)示例如下:
    1:activemq start:使用默認(rèn)的activemq.xml來(lái)啟動(dòng)
    2:activemq start xbean:file:../conf/activemq-2.xml:使用指定的配置文件來(lái)啟動(dòng)
    3:如果不指定file,也就是xbean:activemq-2.xml,那么必須在classpath下面
  • 如果需要啟動(dòng)多個(gè)broker,需要為broker設(shè)置一個(gè)名字
    broker.setName(“name2”);

二、單獨(dú)應(yīng)用的開發(fā)

  • 用ActiveMQ來(lái)構(gòu)建Java應(yīng)用
        主要將ActiveMQ Broker作為獨(dú)立的消息服務(wù)器米構(gòu)建JAVA應(yīng)用。ActiveMQ也支持在vm中通信基于嵌入式的broker,能夠無(wú)縫的集成其它java應(yīng)用
  • 嵌入式Broker啟動(dòng)
    //1:Broker Service啟動(dòng)broker,示例如下
    BrokerService broker = new BrokerService();
    broker.setUseJmx(true);
    broker.addConnector("tcp://localhost:61616");
    broker.start();
    //2:BrokerFactory 啟動(dòng)broker,示例如下:
    String uri = "properties:broker.properties";
    BrokerService broker1 = BrokerFactory.createBroker(new URI(uri));
    broker1.addConnector("tcp://localhost:61616");
    broker1.start();
    //3:broker.properties的內(nèi)容如下:
    useJms=true
    persistent=false
    brokerName=Cheese

三、結(jié)合spring boot的開發(fā)
參考:https://blog.csdn.net/liuchuanhong1/article/details/54603546

  • 配置pom.xml

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-activemq</artifactId>
    </dependency>
    <dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-pool</artifactId>
    </dependency>
  • 配置文件
    spring.activemq.broker-url=tcp://localhost:61616
    spring.activemq.in-memory=true
    #如果此處設(shè)置為true,需要加如下的依賴包,否則會(huì)自動(dòng)配置失敗,報(bào)JmsMessagingTemplate注入失敗
    spring.activemq.pool.enabled=false
  • 生產(chǎn)者

    @Service
    public class Producer {
    @Autowired // 也可以注入JmsTemplate,JmsMessagingTemplate對(duì)JmsTemplate進(jìn)行了封裝
    private JmsMessagingTemplate jmsTemplate;
    
    // 發(fā)送消息,destination是發(fā)送到的隊(duì)列,message是待發(fā)送的消息
    public void sendMessage(Destination destination, final String message){
        jmsTemplate.convertAndSend(destination, message);
    }
    }
  • 消費(fèi)者
    @Component
    public class Consumer {
    使用JmsListener配置消費(fèi)者監(jiān)聽(tīng)的隊(duì)列,其中text是接收到的消息
    @JmsListener(destination = "springboot-activemq")
    public void receiveQueue(String text) {
        System.out.println("Consumer收到的報(bào)文為:"+text);
    }
    }
  • 測(cè)試類

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class SpringBootJmsApplicationTests {
    
    @Autowired
    private Producer producer;
    
    @Test
    public void contextLoads() {
      Destination destination = new ActiveMQQueue("springboot-activemq");
      for (int i = 0; i < 10; i++) {
         producer.sendMessage(destination,"this message is " + i);
      }
    }
    }
  • 測(cè)試結(jié)果
    ActiveMQ(四)——四、用ActiveMQ構(gòu)建應(yīng)用
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI