windows下載:http://activemq.apache.org/download-archives.html
啓動:http://localhost:8161/admin
默認用戶名密碼爲admin、admin
package mq.demo; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.command.ActiveMQQueue; import javax.jms.*; /** * Created by 79782 on 2018/7/5. */ public class MQServer { public static void main(String[] args) throws JMSException { String brokerUrl="tcp://127.0.0.1:61616"; ConnectionFactory factory=new ActiveMQConnectionFactory(brokerUrl); //創建連接對象並啓動 Connection connection = factory.createConnection(); connection.start();//注意開啓連接 //true將生產者所有操作作爲一個事物管理 //Session session=connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); Session session=connection.createSession(Boolean.TRUE, Session.CLIENT_ACKNOWLEDGE); ActiveMQQueue activeMQQueue = new ActiveMQQueue("MQ-QUEUE"); MessageProducer producer = session.createProducer(activeMQQueue); for(int i=0;i<3;i++){ TextMessage textMessage = session.createTextMessage("發送的消息"+(i+1)); //生產者把消息發送到指定的目的地 producer.send(textMessage); } //提交事務,不提交事務代表客戶端可以重複消費 session.commit(); //釋放資源 session.close(); if(null!=connection){ connection.close(); } } }
package mq.demo; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.command.ActiveMQQueue; import javax.jms.*; /** * Created by 79782 on 2018/7/5. */ public class MQConsumer { public static void main(String[] args) throws Exception { String brokerUrl="tcp://127.0.0.1:61616"; ConnectionFactory factory=new ActiveMQConnectionFactory(brokerUrl); //創建連接對象並啓動 Connection connection = factory.createConnection(); connection.start();//注意開啓連接 //true將生產者所有操作作爲一個事物管理 Session session=connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); ActiveMQQueue activeMQQueue = new ActiveMQQueue("MQ-QUEUE"); MessageConsumer consumer = session.createConsumer(activeMQQueue); for(int i=0;i<3;i++){ //接受的是一個消息 Message receive = consumer.receive(); if(receive instanceof TextMessage){ TextMessage message=(TextMessage)receive; System.out.println(message.getText()); } } session.commit(); System.in.read(); //釋放資源 session.close(); if(null!=connection){ connection.close(); } } }
package mq.demo; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.command.ActiveMQQueue; import javax.jms.*; /** * Created by 79782 on 2018/7/5. * 異步消費:服務器生產的同時客戶端在消費 */ public class AsyncMQConsumer { public static void main(String[] args) throws Exception { String brokerUrl="tcp://127.0.0.1:61616"; ConnectionFactory factory=new ActiveMQConnectionFactory(brokerUrl); //創建連接對象並啓動 Connection connection = factory.createConnection(); connection.start();//注意開啓連接 //true將生產者所有操作作爲一個事物管理 Session session=connection.createSession(Boolean.FALSE, Session.CLIENT_ACKNOWLEDGE); ActiveMQQueue activeMQQueue = new ActiveMQQueue("MQ-QUEUE"); MessageConsumer consumer = session.createConsumer(activeMQQueue); consumer.setMessageListener(new MessageListener() { @Override public void onMessage(Message receive) { if(receive instanceof TextMessage){ TextMessage message=(TextMessage)receive; try { System.out.println(message.getText()); //手動簽收 message.acknowledge(); } catch (JMSException e) { e.printStackTrace(); } } } }); System.in.read(); //釋放資源 session.close(); if(null!=connection){ connection.close(); } } }