ActiveMQ中的发送者创建和消费者创建

1.发送者

/**
 * 测试消息发送者
 */
public class ProdecerTest3 {

    public void testProdecer(String msgTest){
        //1.定义链接工厂
        ConnectionFactory connectionFactory=null;
        //2.定义链接对象
        Connection connection=null;
        //3.定义回话
        Session session=null;
        //4.定义目的地
        Destination destination=null;
        //5.定义消息发送者
        MessageProducer messageProducer=null;
        //6.定义消息
        Message message=null;
        try {
            /**
             * userName:访问 ActiveMQ 服务的用户名。用户密码。默认的为 admin。用户名可以通过jetty-ream.properties 文件进行修改
             * password:访问 ActiveMQ 服务的用户名。用户密码。默认的为 admin。用户名可以通过jetty-ream.properties 文件进行修改
             * brokerURL:访问 ActiveMQ 服务的路径地址。路径结构为:协议名://主机地址:端口号
             */
            //1.创建工厂对象
            connectionFactory=new ActiveMQConnectionFactory("admin","admin","tcp://192.168.92.135:61616");
            //2.创建连接对象
            connection=connectionFactory.createConnection();
            //启动连接
            connection.start();
            //3.创建会话对象
            /**
             * transacted:是否使用事务 可选值为:true|false
             * true:使用事务 当设置次变量值。Session.SESSION_TRANSACTED
             * false:不适用事务,设置次变量则 acknowledgeMode 参数必须设置
             * acknowledgeMode:
             * Session.AUTO_ACKNOWLEDGE:自动消息确认机制
             * Session.CLIENT_ACKNOWLEDGE:客户端确认机制
             * Session.DUPS_OK_ACKNOWLEDGE:有副本的客户端确认消息机制
             */
            session=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
            //4.创建目的地:目的地名称即队列的名称。消息的消费者需要通过此名称访问对应的队列
            destination=session.createQueue("my-destination");
            //5.创建消息发送者对象
            messageProducer=session.createProducer(destination);
            //6.创建消息对象
            message=session.createTextMessage(msgTest);

            //7.发送消息
            messageProducer.send(message);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(messageProducer!=null){
                try {
                    messageProducer.close();
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
            if(session!=null){
                try {
                    session.close();
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
            if(connection!=null){
                try {
                    connection.close();
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

2.消费者

/**
 * 测试消息消费者
 */
public class ConsumerTest3 {

    public void testConsumer(){
        //1.定义链接工厂
        ConnectionFactory connectionFactory=null;
        //2.定义链接对象
        Connection connection=null;
        //3.定义回话
        Session session=null;
        //4.定义目的地
        Destination destination=null;
        //5.定义消息消费者
        MessageConsumer messageConsumer=null;
        //6.定义消息
        Message message=null;
        try {
            /**
             * userName:访问 ActiveMQ 服务的用户名。用户密码。默认的为 admin。用户名可以通过jetty-ream.properties 文件进行修改
             * password:访问 ActiveMQ 服务的用户名。用户密码。默认的为 admin。用户名可以通过jetty-ream.properties 文件进行修改
             * brokerURL:访问 ActiveMQ 服务的路径地址。路径结构为:协议名://主机地址:端口号
             */
            //1.创建工厂对象
            connectionFactory=new ActiveMQConnectionFactory("admin","admin","tcp://192.168.92.135:61616");
            //2.创建连接对象
            connection=connectionFactory.createConnection();
            //启动连接
            connection.start();
            //3.创建会话对象
            /**
             * transacted:是否使用事务 可选值为:true|false
             * true:使用事务 当设置次变量值。Session.SESSION_TRANSACTED
             * false:不适用事务,设置次变量则 acknowledgeMode 参数必须设置
             * acknowledgeMode:
             * Session.AUTO_ACKNOWLEDGE:自动消息确认机制
             * Session.CLIENT_ACKNOWLEDGE:客户端确认机制
             * Session.DUPS_OK_ACKNOWLEDGE:有副本的客户端确认消息机制
             */
            session=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
            //4.创建目的地:目的地名称即队列的名称。消息的消费者需要通过此名称访问对应的队列
            destination=session.createQueue("my-destination");
            //5.创建消息消费者对象
            messageConsumer=session.createConsumer(destination);
            //6.接收消息
            //message=messageConsumer.receive();
            //消费者注册监听事件:用于监听ActiveMQ服务中的消息,然后ActiveMQ服务通过回调方法返回消息给consumer
            messageConsumer.setMessageListener(new MessageListener() {
                @Override
                //ActiveMQ 回调的方法onMessage。通过该方法将消息传递到 consumer
                public void onMessage(Message message) {
                    //7.消费处理消息
                    String msg= null;
                    try {
                        msg = ((TextMessage)message).getText();
                    } catch (JMSException e) {
                        e.printStackTrace();
                    }
                    System.out.println("从ActiveMQ服务中获取文本消息:"+msg);
                }
            });

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

 

你可能感兴趣的:(ActiveMQ)