一、多種啓動Broker的方法
- broker:相當於一個ActiveMQ服務器實例
- 命令行啓動參數示例如下:
1:activemq start:使用默認的activemq.xml來啓動
2:activemq start xbean:file:../conf/activemq-2.xml:使用指定的配置文件來啓動
3:如果不指定file,也就是xbean:activemq-2.xml,那麼必須在classpath下面 - 如果需要啓動多個broker,需要爲broker設置一個名字
broker.setName(“name2”);
二、單獨應用的開發
- 用ActiveMQ來構建Java應用
主要將ActiveMQ Broker作爲獨立的消息服務器米構建JAVA應用。ActiveMQ也支持在vm中通信基於嵌入式的broker,能夠無縫的集成其它java應用 - 嵌入式Broker啓動
//1:Broker Service啓動broker,示例如下 BrokerService broker = new BrokerService(); broker.setUseJmx(true); broker.addConnector("tcp://localhost:61616"); broker.start(); //2:BrokerFactory 啓動broker,示例如下: String uri = "properties:broker.properties"; BrokerService broker1 = BrokerFactory.createBroker(new URI(uri)); broker1.addConnector("tcp://localhost:61616"); broker1.start(); //3:broker.properties的內容如下: useJms=true persistent=false brokerName=Cheese
三、結合spring boot的開發
參考: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 #如果此處設置爲true,需要加如下的依賴包,否則會自動配置失敗,報JmsMessagingTemplate注入失敗 spring.activemq.pool.enabled=false
-
生產者
@Service public class Producer { @Autowired // 也可以注入JmsTemplate,JmsMessagingTemplate對JmsTemplate進行了封裝 private JmsMessagingTemplate jmsTemplate; // 發送消息,destination是發送到的隊列,message是待發送的消息 public void sendMessage(Destination destination, final String message){ jmsTemplate.convertAndSend(destination, message); } }
- 消費者
@Component public class Consumer { 使用JmsListener配置消費者監聽的隊列,其中text是接收到的消息 @JmsListener(destination = "springboot-activemq") public void receiveQueue(String text) { System.out.println("Consumer收到的報文爲:"+text); } }
-
測試類
@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); } } }
- 測試結果