测试JMS消息类型JMS(五)

JMS规范定义了2种消息传输模式:持久传送模式和非持久传输模式。
DeliveryMode.PERSISTENT 持久化
DeliveryMode.NON_PERSISTENT 非持久化
通过生产者来设置
MessageProducer producer = session.createProducer(queue);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
持久化信息:
表示当生产者发送信息时即使服务器崩溃,或者出现其他故障时,只要重启服务器
消息任然可以送到消费者,保证了重要消息的送达率。
非持久化信息:
它只能在一切条件顺利的情况下,消息才能保证被送达。
测试源码:
生产者代码:
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;

    public class Sender {

        /**
         * @param args
         * @throws JMSException 
         */
        public static void main(String[] args) throws JMSException {
            ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,"tcp://localhost:61616");
            Connection connection=connectionFactory.createConnection();
            connection.start();

            Queue queue=new ActiveMQQueue("testQueue");
            Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            //第一组测试DeliveryMode.PERSISTENT
            MessageProducer producer=session.createProducer(queue);
            producer.setDeliveryMode(DeliveryMode.PERSISTENT); //这里设置了的消息类型为持久类型
            producer.send(session.createTextMessage("this is presisitent message"));

            //第二组测试DeliveryMode.NON_PERSISTENT
            MessageProducer producer1=session.createProducer(queue);
            producer1.setDeliveryMode(DeliveryMode.NON_PERSISTENT);//这里设置的消息类型为为非持久化的类型
            producer1.send(session.createTextMessage("this is no presisient message"));

            //session.commit();
            System.out.println("消息发送成功。");
        }

}

消费者代码:

import javax.jms.Connection;

import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;

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

public class Receiver {
public static void main(String[] args) throws JMSException {
ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,”tcp://localhost:61616”);
Connection connection=connectionFactory.createConnection();
connection.start();

    Queue queue=new ActiveMQQueue("testQueue");
    Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

    MessageConsumer consumer=session.createConsumer(queue);
    consumer.setMessageListener(new MessageListener() {

        @Override
        public void onMessage(Message arg0) {
            try {
                System.out.println("接受到了消息"+((TextMessage)arg0).getText());
            } catch (JMSException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    });


}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值