jms的俩种模式

package com.jiangchong.job;

import java.util.Date;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;

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

public class JMS
{

    public static void main(String[] args) throws Exception
    {
        consume();
         product();
    }

    public static void product() throws JMSException
    {
        // "tcp://localhost:61616"
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
                "vm:localhost:10000");
        Connection connection = connectionFactory.createConnection();
        connection.start();
        Session session = connection.createSession(false,
                Session.AUTO_ACKNOWLEDGE);
        Topic topic = session.createTopic("testTopic");
        MessageProducer producer = session.createProducer(topic);
        producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
        while (true)
        {
            TextMessage message = session.createTextMessage();
            message.setText("message_" + new Date().toLocaleString());
            producer.send(message);
            try
            {
                Thread.sleep(1000 * 5);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
        }
    }

    public static void consume() throws JMSException
    {
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
                "vm:localhost");
        Connection connection = connectionFactory.createConnection();
        connection.start();
        Session session = connection.createSession(false,
                Session.AUTO_ACKNOWLEDGE);
        Topic topic = session.createTopic("testTopic");
        MessageConsumer consumer = session.createConsumer(topic);
        consumer.setMessageListener(new MessageListener()
        {
            public void onMessage(Message message)
            {
                TextMessage tm = (TextMessage) message;
                try
                {
                    System.out.println("Received message: " + tm.getText());
                }
                catch (JMSException e)
                {
                    e.printStackTrace();
                }
            }
        });
    }

    public static void p2p() throws JMSException
    {
        ConnectionFactory factory = new ActiveMQConnectionFactory(
                "vm://localhost");

        Connection connection = factory.createConnection();
        connection.start();

        Queue queue = new ActiveMQQueue("testQueue");

        final Session session = connection.createSession(false,
                Session.AUTO_ACKNOWLEDGE);
        final Message message = session.createTextMessage(new Date()
                .toLocaleString() + "  Hello JMS! come from producer");

        final MessageProducer producer = session.createProducer(queue);
        new Thread(new Runnable()
        {

            public void run()
            {
                while (true)
                {
                    try
                    {
                        producer.send(message);
                    }
                    catch (JMSException e)
                    {
                        e.printStackTrace();
                    }
                    try
                    {
                        Thread.sleep(1000 * 3);
                    }
                    catch (InterruptedException e)
                    {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }

        }).start();

        final MessageConsumer comsumer = session.createConsumer(queue);
        new Thread(new Runnable()
        {

            public void run()
            {
                while (true)
                {
                    Message recvMessage;
                    try
                    {
                        recvMessage = comsumer.receive();
                        System.out.println(((TextMessage) recvMessage)
                                .getText() + " rec");
                    }
                    catch (JMSException e)
                    {
                        e.printStackTrace();
                    }
                    try
                    {
                        Thread.sleep(4 * 1000L);
                    }
                    catch (InterruptedException e)
                    {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }

}
时间: 2024-10-06 21:02:05

jms的俩种模式的相关文章

JMS的两种模式 P2P,PUB/SUB 消息发送

1.P2P模型 在P2P模型中,有下列概念:消息队列(Queue).发送者(Sender).接收者(Receiver).每个消息都被发送到一个特定的队列,接收者从队列中获取消息.队列保留着消息,直到它们被消费或超时. ? 每个消息只有一个消费者 (Consumer)(即一旦被消费,消息就不再在消息队列中) ? 发送者和接收者之间在时间上没有依赖性 ,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列. ? 接收者在成功接收消息之后需向队列应答成功 如果你希望发

Lvs俩种模式

1. lvs-nat模型构建 假设测试环境:使用IP172.16.16.16. 需要A.B俩台Centos6.5虚拟机.提前关闭selinux 两台真实服务器的IP分别是192.168.1.1.192.168.1.2. 1.添加俩快网卡给A机器,A.B机器开好网卡转发. 2.ifconfig配置IP地址,互相可以ping通.网关设置好!!能ping通另一台机器的第二块网卡 3.AB机器安装好 [[email protected]~]# yum install httpd ipvsadm -y 4

JMS是一种应用于异步消息传递的标准API

JMS是一种应用于异步消息传递的标准API,作为Java平台的一部分,JMS可以允许不同应用.不同模块之间实现可靠.异步数据通信. 一些概念 JMS provider    An implementation of the JMS interface for a Message Oriented Middleware (MOM). Providers are implemented as either a Java JMS implementation or an adapter to a no

公众号运营常见的4种模式

本文和大家分享的主要是新媒体运营中运营公众号的4种模式,一起来看看吧,希望对大家有所帮助. 如果把公司的公众号当作一个人来看待,那么有三个环节将决定它的生死: 公众号命名20%; 老板(领导)的战略50%: 运营模式30% 保证不了一见钟情 起码也不能让人一见转身吧 当用户要关注一个公众号,第一眼注意到最醒目的就是"公众号名称",这个"公众号名称"决定该用户对关注之后的愿景想象.如果看到的是一个不知名的公司名字,比如你看到的是"广州力图油漆公司.巴图鲁科技

Binlog的三种模式

binlog模式分三种(row,statement,mixed) 1.Row 日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进行修改,只记录要修改的数据,只有value,不会有sql多表关联的情况. 优点:在row模式下,bin-log中可以不记录执行的sql语句的上下文相关的信息,仅仅只需要记录那一条记录被修改了,修改成什么样了,所以row的日志内容会非常清楚的记录下每一行数据修改的细节,非常容易理解.而且不会出现某些特定情况下的存储过程和function,以及trig

Linux网卡bond的七种模式详解

像Samba.Nfs这种共享文件系统,网络的吞吐量非常大,就造成网卡的压力很大,网卡bond是通过把多个物理网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,具体的功能取决于采用的哪种模式. 一.bond的七种模式介绍:1.mode=0(balance-rr)(平衡抡循环策略)链路负载均衡,增加带宽,支持容错,一条链路故障会自动切换正常链路.交换机需要配置聚合口,思科叫port channel.特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1-.一直循环

httpd的三种模式比较

查看你的httpd使用了哪种模式: /usr/local/apache2/bin/httpd -V |grep 'Server MPM' 使用哪种模式,需要在编译的时候指定 --with-mpm=prefork|worker|event 当然也可以编译的时候,让三者都支持: --enable-mpms-shared=all 然后在配置文件中,修改 LoadModule mpm_worker_module modules/mpd_mpm_worker.so 2.2版本默认为worker,2.4版本

WCF的三种模式

WCF通信的3种模式 1.正常模式:客户端调取接口->等待服务响应->接受响应->执行客户端后面代码(wcf服务有入参,有返回值) 2.数据报模式:客户端调取接口->不等待响应,直接执行客户端后面代码(wcf服务有入参,无返回值) 3.双工模式:客户端调取接口->服务端立刻回复介绍到请求->服务端继续执行,客户端也继续执行->服务端执行回调客户端回调函数,传递信息给客户端(wcf服务有入参,无返回值,但必须定义客户端回调函数) 上代码: 接口代码 using Sy

javascript创建对象的几种模式

虽然Object构造函数或者对象字面量都可以用来创建单个对象,但这些方式有个明显的缺点:使用同一个接口创建很多对象会产生大量的重复代码.为了解决这个问题,人们开始使用工厂模式的一种变体. 1.工厂模式 function createPerson(name, age, job){ var o=new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function(){ alert(this.name); }; retu