activeMQ发送与接受消息模板代码
生活随笔
收集整理的這篇文章主要介紹了
activeMQ发送与接受消息模板代码
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
發(fā)送著:
/*** */ package activemqAPI.helloworld;import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnectionFactory;/*** @author weijie** 2018年9月3日*/ public class Sender {public static void main(String[] args) throws JMSException {//第一步:建立ConnnectionFactory工廠對象,需要填入用戶名,密碼,以及連接地址,默認端口:61616(activemq.xml中可以改) ,均使用默認即可,tcp://localhost:61616ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER, ActiveMQConnectionFactory.DEFAULT_PASSWORD, "tcp://localhost:61616");//第二步:通過ConnectionFactory工廠對象我們創(chuàng)建一個Connection連接,并且調(diào)用Connection的start方法開啟連接,Connection默認是關閉的Connection connection = connectionFactory.createConnection();connection.start();//第三步:通過Connection對象創(chuàng)建Session會話(上見下文環(huán)境對象),用于接收消息,參數(shù)配置1為是否啟用事務,參數(shù)配置2為簽收模式,一般設置自動簽收 // Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); //收到消息后,要手動去簽收消息 Session session = connection.createSession(Boolean.TRUE, Session.CLIENT_ACKNOWLEDGE); //第四步:通過Session創(chuàng)建Destination對象 ,指的是一個客戶端用來指定生產(chǎn)消息目標和消費消息來源的對象,在PTP模式中,Destination被稱作Topic即主題,在程序中可以使用多個Queue和TopicDestination destination = session.createQueue("queue1 ");//第五步:我們需要Session對象創(chuàng)建消息的發(fā)送和接受對象(生產(chǎn)者和消費者)MessageProducer/MessageConsumerMessageProducer messageProducer = session.createProducer(destination);//第六步:我們可以使用MessageProducer的serDeliveyMode方法為其設置持久化特性和非持久化特性(DeliveryMode)messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);//第七步:最后我們使用JMS規(guī)范的TextMessage形式創(chuàng)建數(shù)據(jù)(通過Session對象),并用MessageProducer的send方法發(fā)送數(shù)據(jù),同理客戶端使用receive方法接受消息TextMessage textMessage = session.createTextMessage();textMessage.setText("hello java");messageProducer.send(textMessage);//使用事務提交session.commit();if(connection != null) {connection.close();}} }接收者:
/*** */ package activemqAPI.helloworld;import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageConsumer; import javax.jms.Session; import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnectionFactory;/*** @author weijie** 2018年9月3日*/ public class Receiver {public static void main(String[] args) throws JMSException {//第一步:建立ConnnectionFactory工廠對象,需要填入用戶名,密碼,以及連接地址,默認端口:61616(activemq.xml中可以改) ,均使用默認即可,tcp://localhost:61616ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER, ActiveMQConnectionFactory.DEFAULT_PASSWORD, "tcp://localhost:61616");//第二步:通過ConnectionFactory工廠對象我們創(chuàng)建一個Connection連接,并且調(diào)用Connection的start方法開啟連接,Connection默認是關閉的Connection connection = connectionFactory.createConnection();connection.start();//第三步:通過Connection對象創(chuàng)建Session會話(上見下文環(huán)境對象),用于接收消息,參數(shù)配置1為是否啟用事務,參數(shù)配置2為簽收模式,一般設置自動簽收//三種簽收模式的優(yōu)缺點//使用事務的方式進行消息的發(fā)送 // Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); //使用clent要手動去簽收,消息才能被消費Session session = connection.createSession(Boolean.TRUE, Session.CLIENT_ACKNOWLEDGE); //第四步:通過Session創(chuàng)建Destination對象 ,指的是一個客戶端用來指定生產(chǎn)消息目標和消費消息來源的對象,在PTP模式中,Destination被稱作Topic即主題,在程序中可以使用多個Queue和TopicDestination destination = session.createQueue("queue1 ");//第五步:我們需要Session對象創(chuàng)建消息的發(fā)送和接受對象(生產(chǎn)者和消費者)MessageProducer/MessageConsumerMessageConsumer messageConsumer = session.createConsumer(destination);//第七步:最后我們使用JMS規(guī)范的TextMessage形式創(chuàng)建數(shù)據(jù)(通過Session對象),并用MessageProducer的send方法發(fā)送數(shù)據(jù),同理客戶端使用receive方法接受消息while(true) {TextMessage msg = (TextMessage)messageConsumer.receive();//手動簽收msg.acknowledge();System.out.println("收到的內(nèi)容:"+msg .getText());if(msg == null)break;}if(connection != null) {connection.close(); }} }總結(jié)
以上是生活随笔為你收集整理的activeMQ发送与接受消息模板代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jmater参数说明
- 下一篇: 相对路径转成绝对路径