028-86922220

建站动态

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

ActiveMQ(三)——理解和掌握JMS-创新互联

一、JMS基本概念

成都创新互联公司专注于企业全网整合营销推广、网站重做改版、当雄网站定制设计、自适应品牌网站建设、H5建站电子商务商城网站建设、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为当雄等各大城市提供网站开发制作服务。

二、 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

十、总结

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文题目:ActiveMQ(三)——理解和掌握JMS-创新互联
文章网址:http://www.tsicrk.com/article/doddpj.html

其他资讯

让你的专属顾问为你服务

0.6747s