JMS

jms是一個規範。java

JMS域:apache

1:點對點消息風格。 容許一個客戶端經過一個叫作隊列的中間抽象發送一個消息給另外一個客戶端。api

2:發佈訂閱風格。 容許一個客戶端經過一個叫作主題的中間抽象發送一個消息給多個客戶端,發送消息的客戶端將一個消息發佈到指定的主題中,而後這個消息將被投遞到全部訂閱了這個主題的客戶端。網絡

ActiveMQ是一個易於使用的消息中間件:session

  1. 將數據從一個應用程序傳送到另外一個應用程序,或者從軟件的一個模塊傳送到另一個模塊;
  2. 負責創建網絡通訊的通道,進行數據的可靠傳送。
  3. 保證數據不重發,不丟失。
  4. 可以實現跨平臺操做,可以爲不一樣操做系統上的軟件集成技工數據傳送服務。 官網下載啓動 進入 http://0.0.0.0:8161/api/jolokia/ 默認用戶名密碼 admin admin

要引入的jaride

<dependency>
			<groupId>org.apache.activemq</groupId>
			<artifactId>activemq-all</artifactId>
			<version>5.14.1</version>
		</dependency>

生產者:操作系統

package com.lsq.jms.queue.provider;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * Created by lsq on 2017/2/5.
 */
public class DNProviderImpl implements  DNProvider {

    private static final String USERNAME= ActiveMQConnection.DEFAULT_USER;

    private static final String PASSWORD= ActiveMQConnection.DEFAULT_PASSWORD;

    private static final String BROKURL= ActiveMQConnection.DEFAULT_BROKER_URL;

    ConnectionFactory connectionFactory;

    Connection connection;

    Session session;
    @Override
    public void init() {

        try {
            connectionFactory = new ActiveMQConnectionFactory(USERNAME,PASSWORD,BROKURL);
            connection = connectionFactory.createConnection();
            connection.start();
            session = connection.createSession(true, Session.SESSION_TRANSACTED);

        } catch (JMSException e) {
            e.printStackTrace();
        }

    }

    @Override
    public void sendMessage(String disname) {
        try {
            Queue queue = session.createQueue(disname);
            MessageProducer producer = session.createProducer(queue);
       for (int i=0;i<1000;i++) {
           TextMessage textMessage = session.createTextMessage("生產者 我是XX平臺,發送短信");
           System.out.println("生產者 我是XX平臺,發送短信");
           producer.send(textMessage);

           session.commit();

       }

        } catch (JMSException e) {
            e.printStackTrace();
        }


    }
}
package com.lsq.jms.queue;

import com.lsq.jms.queue.provider.DNProvider;
import com.lsq.jms.queue.provider.DNProviderImpl;

/**
 * Created by lsq on 2017/2/5.
 */
public class ProviderTest {
    public static void main(String[] args) {
        DNProvider provider = new DNProviderImpl();
        provider.init();
        provider.sendMessage("LSQ");
    }
}

消費者:code

package com.lsq.jms.queue.cousumer;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * Created by lsq on 2017/2/5.
 */
public class DNConsumerImpl implements DNConsumer{

    private static final String USERNAME= ActiveMQConnection.DEFAULT_USER;

    private static final String PASSWORD= ActiveMQConnection.DEFAULT_PASSWORD;

    private static final String BROKURL= ActiveMQConnection.DEFAULT_BROKER_URL;

    ConnectionFactory connectionFactory;

    Connection connection;

    Session session;
    @Override
    public void init() {

        try {
            connectionFactory = new ActiveMQConnectionFactory(USERNAME,PASSWORD,BROKURL);
            connection = connectionFactory.createConnection();
            connection.start();
            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

        } catch (JMSException e) {
            e.printStackTrace();
        }

    }

    @Override
    public void getMessage(String disname) {
        try {
            Queue queue = session.createQueue(disname);
            MessageConsumer consumer = session.createConsumer(queue);
            while(true){
                TextMessage textMessage = (TextMessage) consumer.receive();
                textMessage.acknowledge();
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                if(textMessage != null){
                    System.out.println("消費者接收消息:接收的消息內容2是:"+textMessage.getText());
                }else{
                    break;
                }

            }



        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}
package com.lsq.jms.queue;

import com.lsq.jms.queue.cousumer.DNConsumer;
import com.lsq.jms.queue.cousumer.DNConsumerImpl;

/**
 * Created by lsq on 2017/2/5.
 */
public class CousumerTest {
    public static void main(String[] args) {
        DNConsumer consumer = new DNConsumerImpl();
        consumer.init();
        consumer.getMessage("LSQ");
    }
}
相關文章
相關標籤/搜索