JMS訂閱/發佈消息傳送模型

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.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnectionFactory;

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);
        /* 創建一個消息發佈 */
        Topic topic = session.createTopic("message");

        /* 發佈者 */
        MessageProducer product = session.createProducer(topic);
        /* 設置持久性 */
        product.setDeliveryMode(DeliveryMode.PERSISTENT);

        /* 訂閱者 */
        MessageConsumer consumer = session.createConsumer(topic, null, false);

        /* 設置監聽事件 */
        consumer.setMessageListener(new MessageListener() {

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

        /* 創建一條消息 */
        Message msg = session.createTextMessage("發佈/訂閱");
        product.send(msg);

    }
}

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