028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

ActiveMQ(三)——理解和掌握JMS

一、JMS基本概念

创新互联-专业网站定制、快速模板网站建设、高性价比漳平网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式漳平网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖漳平地区。费用合理售后完善,十年实体公司更值得信赖。

二、 jms的消息结构

三、JMS的可靠性机制

四、JMS的PTP模型

五、JMS的Pub/Sub模型

七、JMS应用开发的基本步骤
ActiveMQ(三)——理解和掌握JMS

八、非持久的Topic消息示例

3:由于不知道客户端发送多少信息,因此改成while循环的方式了,例如:

Message message = consumer.receive();
while(message!=null){
TextMessage txtMsg= (TextMessage)message;
System.out.println(“收到消息:”+txtMsg.getText());
message = consumer.receive(1000L);
}
public class NoPersistenceReceive {
    public static void main(String[] args) throws Exception{
        //连接工厂
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
        Connection connection = connectionFactory.createConnection();
        connection.start();

        //带事务的session
        final Session session = connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);

        Destination destination = session.createTopic("myTopic");
        MessageConsumer consumer = session.createConsumer(destination);

        Message message = consumer.receive();
        while(message!=null){
            TextMessage txtMsg= (TextMessage)message;
            System.out.println("收到消息:"+txtMsg.getText());
            message = consumer.receive(1000L);
        }
        session.commit();
        session.close();
        connection.close();
    }
}

注意:对于非持久性的Topic消息,则需要接收者保持运行状态,不然消息发送者发出的消息会接收不到。
ActiveMQ(三)——理解和掌握JMS

九、持久的Topic消息示例
1:需要在连接上设置消费者ID,用来识别消费者
2:需要创建TopicSubscriber来订阅
3:要设置好了过后再start这个connnection
4:消费者一定要先运行一次,等于向消息服务中间件注册这个消费者,然后再运行客户端发送消息,这个时候无论消费者是否在线,都会接收到,下次连接的时候,会把没有收过的消息都接收下来。

public class PersistenceSender {
    public static void main(String[] args) throws Exception{
        //连接工厂
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
        Connection connection = connectionFactory.createConnection();

        //带事务的session
        Session session = connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);
        Destination destination = session.createTopic("myTopic");
        MessageProducer producer = session.createProducer(destination);

        producer.setDeliveryMode(DeliveryMode.PERSISTENT);
        connection.start();

        for (int i = 0; i < 3; i++) {
            TextMessage message = session.createTextMessage("message---"+i);
            producer.send(message);
        }
        session.commit();
        session.close();
        connection.close();
    }
}
public class PersistenceReceive {
    public static void main(String[] args) throws Exception{
        //连接工厂
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
        Connection connection = connectionFactory.createConnection();
        connection.setClientID("cc1");

        //带事务的session
        final Session session = connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);

        Topic destination = session.createTopic("myTopic");
        TopicSubscriber ts = session.createDurableSubscriber(destination,"T1");
        connection.start();

        Message message = ts.receive();
        while(message!=null){
            TextMessage txtMsg= (TextMessage)message;
            System.out.println("收到消息:"+txtMsg.getText());
            message = ts.receive(1000L);
        }
        session.commit();
        session.close();
        connection.close();
    }
}

ActiveMQ(三)——理解和掌握JMS

十、总结


分享标题:ActiveMQ(三)——理解和掌握JMS
文章地址:http://www.tsicrk.com/article/joshsd.html

其他资讯

让你的专属顾问为你服务

2.3449s