您好,登錄后才能下訂單哦!
這篇文章主要介紹“activemq的broker怎么實現”,在日常操作中,相信很多人在activemq的broker怎么實現問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”activemq的broker怎么實現”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
broker 相當于 activemq服務的一個實例,他可以嵌入在Java程序里面。也就是說,Linux端的activemq可以不用啟動,啟動Java程序端的broker,消費者和生產者訪問當前的broker即可,即brokerUrl ip改為localhost即可。開發使用還是常用Linux端的activemq服務。
這里使用的while(true)的死循環,保持broker一直啟動;
1 public class TestActiveMqBroker { 2 public static void main(String[] args) throws Exception { 3 // ActiveMQ也支持在vm中通信基于嵌入的broker 4 BrokerService brokerService = new BrokerService(); 5 brokerService.setPopulateJMSXUserID(true); 6 brokerService.addConnector("tcp://localhost:61616"); 7 brokerService.start(); 8 while (true) { 9 10 } 11 } 12
地址需要改成localhost;
ACTIVEMQ_URL = "tcp://localhost:61616";
消費者:
1 package org.muses.ssm.utils; 2 3 import java.io.IOException; 4 5 import javax.jms.Connection; 6 import javax.jms.JMSException; 7 import javax.jms.Message; 8 import javax.jms.MessageConsumer; 9 import javax.jms.MessageListener; 10 import javax.jms.Queue; 11 import javax.jms.Session; 12 import javax.jms.TextMessage; 13 14 import org.apache.activemq.ActiveMQConnectionFactory; 15 16 public class TestActiveMqConsumer { 17 private static final String ACTIVEMQ_URL = "tcp://localhost:61616"; 18 private static final String QUEUE_NAME = "queue_01"; 19 20 public static void main(String[] args) throws JMSException, IOException { 21 // 創建連接工廠,按照給定的URL,采用默認用戶名密碼 22 ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL); 23 // 通過連接工廠 獲取connection 并啟動訪問 24 Connection conn = activeMQConnectionFactory.createConnection(); 25 conn.start(); 26 // 創建session會話 27 Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); 28 // 創建目的地 (具體是隊列還是主題topic) 29 Queue queue = session.createQueue(QUEUE_NAME); 30 31 // 創建消息的生產者 32 MessageConsumer messageConsumer = session.createConsumer(queue); 33 34 System.out.println("****我是3號消費者******"); 35 messageConsumer.setMessageListener(new MessageListener() { 36 37 @Override 38 public void onMessage(Message message) { 39 if (message != null && message instanceof TextMessage) { 40 TextMessage textMessage = (TextMessage) message; 41 try { 42 System.out.println("收到消息:" + textMessage.getText()); 43 } catch (JMSException e) { 44 // TODO Auto-generated catch block 45 e.printStackTrace(); 46 } 47 } 48 } 49 50 }); 51 System.in.read(); 52 53 messageConsumer.close(); 54 session.close(); 55 conn.close(); 56 57 } 58 59
View Code
生產者:
1 package org.muses.ssm.utils; 2 3 import javax.jms.Connection; 4 import javax.jms.JMSException; 5 import javax.jms.MessageProducer; 6 import javax.jms.Queue; 7 import javax.jms.Session; 8 import javax.jms.TextMessage; 9 10 import org.apache.activemq.ActiveMQConnectionFactory; 11 12 public class TestActiveMqProducer { 13 private static final String ACTIVEMQ_URL = "tcp://localhost:61616"; 14 private static final String QUEUE_NAME = "queue_01"; 15 16 public static void main(String[] args) throws JMSException { 17 // 創建連接工廠,按照給定的URL,采用默認用戶名密碼 18 ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL); 19 // 通過連接工廠 獲取connection 并啟動訪問 20 Connection conn = activeMQConnectionFactory.createConnection(); 21 conn.start(); 22 // 創建session會話 23 Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); 24 // 創建目的地 (具體是隊列還是主題topic) 25 Queue queue = session.createQueue(QUEUE_NAME); 26 27 // 創建消息的生產者 28 MessageProducer messageProducer = session.createProducer(queue); 29 30 for (int i = 0; i < 3; i++) { 31 // 創建消息;可以理解為學生按照要求寫好問題 32 TextMessage textMessage = session.createTextMessage("mession-------" + i); 33 // 通過messageProducer 發送給mq 34 messageProducer.send(textMessage); 35 } 36 messageProducer.close(); 37 session.close(); 38 conn.close(); 39 System.out.println("發送消息成功"); 40 } 41 42
View Code
生產者發送3條消息,消費者消費3條消息,和啟動Linux的activemq 服務效果相同;
1 <dependency> 2 <groupId>org.apache.activemq</groupId> 3 <artifactId>activemq-all</artifactId> 4 <version>5.16.5</version> 5 </dependency> 6 <dependency> 7 <groupId>org.apache.xbean</groupId> 8 <artifactId>xbean-spring</artifactId> 9 <version>4.21</version> 10 </dependency> 11 <!-- activemq broker需要的依賴 --> 12 <dependency> 13 <groupId>com.fasterxml.jackson.core</groupId> 14 <artifactId>jackson-databind</artifactId> 15 <version>2.13.3</version> 16 </dependency>
到此,關于“activemq的broker怎么實現”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。