點對點消息傳送模型

package com.shine.test;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;

public class ActiveMQ {

    public static void main(String[] args) throws JMSException {
        /* 工廠連接一個JMS */
        ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");

        Connection connection = factory.createConnection();
        connection.start();

        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        /* 創建一個消息隊列 */
        Queue queue = new ActiveMQQueue("message");
        /* 點對點中的生產者 */
        MessageProducer product = session.createProducer(queue);
        /* 設置持久性 */
        product.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
        /* 創建一條消息 */
        Message msg = session.createTextMessage("點對點");
        product.send(msg);
        /* 點對點中的消費者 */
        MessageConsumer consumer = session.createConsumer(queue);
        /* 設置監聽事件 */
        consumer.setMessageListener(new MessageListener() {

            public void onMessage(Message message) {
                try {
                    System.out.println(((TextMessage) message).getText());
                }
                catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        });

        /* 關閉連接 */
        if (connection != null) {
            consumer.close();
            product.close();
            session.close();
            connection.close();
        }

    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章