一、下載與安裝
直接去官網(wǎng)(
http://activemq.apache.org/)下載最新版本即可,由于這是免安裝的,只需要解壓就行了 。安裝完之后進入bin目錄,雙擊 activemq.bat文件(linux下在bin目錄下執(zhí)行 activemq start)
二、訪問控制臺
在瀏覽器輸入:http://ip:8161/admin/,出現(xiàn)如下界面表示啟動成功,默認的用戶名密碼都是admin

三、修改端口號
61616為對外服務(wù)端口號
8161為控制器端口號
當端口號沖突時,可以修改這兩個端口號 。cd conf ,修改activemq.xml 修改里面的61616端口 。修改jetty.xml,修改里面的8161端口 。
queue隊列模式:
【activemq端口怎么調(diào) activemq詳解】和rabbitmq簡單隊列模式一樣,若是有多個消費者消費同一個隊列中的消息的話,默認也是輪詢機制的消費
示例代碼:
public class Productor {public static final String BORKER_URL = "tcp://127.0.0.1:61616";public static final String QUEUE_NAME = "queue1";public static void main(String[] args) throws JMSException {//創(chuàng)建工廠ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(BORKER_URL);//創(chuàng)建tcp連接Connection connection = factory.createConnection();//建立連接connection.start();/*** 創(chuàng)建會話,1.是否開啟事務(wù),2.簽收模式*/Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//創(chuàng)建隊列(消息的目的地)Queue queue = session.createQueue(QUEUE_NAME);//創(chuàng)建生產(chǎn)者MessageProducer producer = session.createProducer(queue);//消息非持久化producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);//消息持久化 默認是持久化的//producer.setDeliveryMode(DeliveryMode.PERSISTENT);//創(chuàng)建消息TextMessage message = session.createTextMessage("你好嗎");//發(fā)送消息producer.send(message);producer.close();session.close();connection.close();System.out.println("發(fā)送成功!");}}public class Consumer {public static final String BORKER_URL = "tcp://127.0.0.1:61616";public static final String QUEUE_NAME = "queue1";public static void main(String[] args) throws JMSException {//創(chuàng)建工廠ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(BORKER_URL);//創(chuàng)建tcp連接Connection connection = factory.createConnection();//建立連接connection.start();/*** 創(chuàng)建會話,1.是否開啟事務(wù),2.簽收模式*/Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//創(chuàng)建/聲明隊列(消息的目的地)Queue queue = session.createQueue(QUEUE_NAME);//創(chuàng)建消費者MessageConsumer consumer = session.createConsumer(queue);/*while (true) {//receive會阻塞線程TextMessage message = (TextMessage)consumer.receive();System.out.println("接收到消息:" + message.getText());}*///監(jiān)聽的方式消費consumer.setMessageListener(message -> {TextMessage textMessage = (TextMessage)message;try {System.out.println("1號接收到消息:" + textMessage.getText());} catch (JMSException e) {e.printStackTrace();}});}}topic隊列模式:稱為發(fā)布訂閱模式,生產(chǎn)者把消息發(fā)送給訂閱給某個topic主題的消費者,是分發(fā)的模式,這種模式默認需要先啟動消費者,不然就算生產(chǎn)者發(fā)布了某個topic主題的消息,消費者也消費不了;除非消費者提前訂閱,并且做了消息持久化的處理,這樣后啟動消費者才能消費提前推送的消息 。
代碼:
public class Productor {public static final String BORKER_URL = "tcp://127.0.0.1:61616";public static final String TOPIC_NAME = "topic1";public static void main(String[] args) throws JMSException {//創(chuàng)建工廠ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(BORKER_URL);//異步投遞factory.setUseAsyncSend(true);//創(chuàng)建tcp連接Connection connection = factory.createConnection();/*** 創(chuàng)建會話,1.是否開啟事務(wù),2.簽收模式*/Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//創(chuàng)建/聲明topic(消息的目的地)Topic topic = session.createTopic(TOPIC_NAME);//創(chuàng)建生產(chǎn)者ActiveMQMessageProducer producer = (ActiveMQMessageProducer)session.createProducer(topic);//持久化producer.setDeliveryMode(DeliveryMode.PERSISTENT);//建立連接connection.start();//創(chuàng)建消息TextMessage message = session.createTextMessage("你好嗎");//發(fā)送消息,異步發(fā)送回調(diào)函數(shù)producer.send(message, new AsyncCallback() {@Overridepublic void onSuccess() {System.out.println("success");}@Overridepublic void onException(JMSException e) {System.out.println("fail");}});producer.close();session.close();connection.close();System.out.println("發(fā)送成功!");}}public class Consumer1 {public static final String BORKER_URL = "tcp://127.0.0.1:61616";public static final String TOPIC_NAME = "topic1";public static void main(String[] args) throws JMSException {//創(chuàng)建工廠ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(BORKER_URL);//創(chuàng)建tcp連接Connection connection = factory.createConnection();//制定clientIdconnection.setClientID("my");/*** 創(chuàng)建會話,1.是否開啟事務(wù),2.簽收模式*/Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//創(chuàng)建/聲明topic(消息的目的地)Topic topic = session.createTopic(TOPIC_NAME);//訂閱主題TopicSubscriber subscriber = session.createDurableSubscriber(topic, "remark");//建立連接connection.start();while (true) {//receive會阻塞線程//接收訂閱的消息TextMessage message = (TextMessage) subscriber.receive();System.out.println("接收到消息:" + message.getText());}/*//創(chuàng)建消費者MessageConsumer consumer = session.createConsumer(topic);//建立連接connection.start();*//*while (true) {//receive會阻塞線程TextMessage message = (TextMessage)consumer.receive();System.out.println("接收到消息:" + message.getText());}*//*//監(jiān)聽的方式消費consumer.setMessageListener(message -> {TextMessage textMessage = (TextMessage)message;try {System.out.println("1號接收到消息:" + textMessage.getText());} catch (JMSException e) {e.printStackTrace();}});*/}}
推薦閱讀
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 下一站江湖忠奸奇遇怎么完成 下一站江湖忠奸奇遇完成攻略
- 加油站大亨怎么賺錢 加油站大亨賺錢方法分享
- 下一站江湖白首太玄經(jīng)怎么獲得 下一站江湖白首太玄經(jīng)獲得攻略
- 下一站江湖吳嬸支線怎么做 下一站江湖吳嬸支線任務(wù)攻略
- 下一站江湖竊賊支線怎么做 下一站江湖竊賊支線任務(wù)攻略
- 下一站江湖曲昊支線怎么做 下一站江湖曲昊支線任務(wù)攻略
- 下一站江湖鏢局支線怎么做 下一站江湖鏢局支線任務(wù)攻略
- 下一站江湖刁延支線怎么做 下一站江湖刁延支線任務(wù)攻略
- 加油站大亨修改器分享 加油站大亨修改器怎么用
- 加油站大亨怎么保持清潔 加油站大亨保持清潔技巧分享
