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");
    }
}
相关文章
相关标签/搜索