activeMQ发送与接受消息模板代码

发送着:


/**
 * 
 */
package activemqAPI.helloworld;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

/**
 * @author weijie
 *
 * 2018年9月3日
 */
public class Sender {
    public static void main(String[] args) throws JMSException {
        //第一步:建立ConnnectionFactory工厂对象,需要填入用户名,密码,以及连接地址,默认端口:61616(activemq.xml中可以改) ,均使用默认即可,tcp://localhost:61616
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER, ActiveMQConnectionFactory.DEFAULT_PASSWORD, "tcp://localhost:61616");

        //第二步:通过ConnectionFactory工厂对象我们创建一个Connection连接,并且调用Connection的start方法开启连接,Connection默认是关闭的
        Connection connection = connectionFactory.createConnection();
        connection.start();

        //第三步:通过Connection对象创建Session会话(上见下文环境对象),用于接收消息,参数配置1为是否启用事务,参数配置2为签收模式,一般设置自动签收
//      Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); 
        //收到消息后,要手动去签收消息 
        Session session = connection.createSession(Boolean.TRUE, Session.CLIENT_ACKNOWLEDGE); 
        //第四步:通过Session创建Destination对象 ,指的是一个客户端用来指定生产消息目标和消费消息来源的对象,在PTP模式中,Destination被称作Topic即主题,在程序中可以使用多个Queue和Topic
        Destination destination = session.createQueue("queue1 ");

        //第五步:我们需要Session对象创建消息的发送和接受对象(生产者和消费者)MessageProducer/MessageConsumer
        MessageProducer messageProducer = session.createProducer(destination);

        //第六步:我们可以使用MessageProducer的serDeliveyMode方法为其设置持久化特性和非持久化特性(DeliveryMode)
        messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

        //第七步:最后我们使用JMS规范的TextMessage形式创建数据(通过Session对象),并用MessageProducer的send方法发送数据,同理客户端使用receive方法接受消息
        TextMessage textMessage = session.createTextMessage();
        textMessage.setText("hello java");
        messageProducer.send(textMessage);
        //使用事务提交
        session.commit();
        if(connection != null) {
            connection.close();
        }
    }
}

接收者:

/**
 * 
 */
package activemqAPI.helloworld;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

/**
 * @author weijie
 *
 * 2018年9月3日
 */
public class Receiver {
    public static void main(String[] args) throws JMSException {
        //第一步:建立ConnnectionFactory工厂对象,需要填入用户名,密码,以及连接地址,默认端口:61616(activemq.xml中可以改) ,均使用默认即可,tcp://localhost:61616
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER, ActiveMQConnectionFactory.DEFAULT_PASSWORD, "tcp://localhost:61616");

        //第二步:通过ConnectionFactory工厂对象我们创建一个Connection连接,并且调用Connection的start方法开启连接,Connection默认是关闭的
        Connection connection = connectionFactory.createConnection();
        connection.start();

        //第三步:通过Connection对象创建Session会话(上见下文环境对象),用于接收消息,参数配置1为是否启用事务,参数配置2为签收模式,一般设置自动签收
        //三种签收模式的优缺点
        //使用事务的方式进行消息的发送
//      Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); 
        //使用clent要手动去签收,消息才能被消费
        Session session = connection.createSession(Boolean.TRUE, Session.CLIENT_ACKNOWLEDGE); 
        //第四步:通过Session创建Destination对象 ,指的是一个客户端用来指定生产消息目标和消费消息来源的对象,在PTP模式中,Destination被称作Topic即主题,在程序中可以使用多个Queue和Topic
        Destination destination = session.createQueue("queue1 ");

        //第五步:我们需要Session对象创建消息的发送和接受对象(生产者和消费者)MessageProducer/MessageConsumer
        MessageConsumer messageConsumer = session.createConsumer(destination);

        //第七步:最后我们使用JMS规范的TextMessage形式创建数据(通过Session对象),并用MessageProducer的send方法发送数据,同理客户端使用receive方法接受消息
        while(true) {
            TextMessage msg = (TextMessage)messageConsumer.receive();
            //手动签收
            msg.acknowledge();
            System.out.println("收到的内容:"+msg .getText());
            if(msg == null)
                break;
        }
        if(connection != null) {
            connection.close();   
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值