简单的JMS入门案列(一)

这里采用的是用本机做为服务器,写的一个发送与接受消息简单的Java消息服务,它的缺点是只能接受一次
服务器发送来的消息,消费者没有对服务器发送的消息进行监听,还有一旦服务器崩溃,服务器中的消息,会丢失。
步骤:
预备工作导入3个包:
分别是:activemq-all-5.13.0.jar ,commons-collections-3.2.2.jar,
commons-pool2-2.4.2.jar

1,建立与消息服务器的连接,建立消息工厂

2,创建一个队列

3,通过连接工厂创建一个会话,即session

创建session时注意:
         createSession(paramA,paramB);
        paramA是设置事务的,paramB设置acknowledgment mode
        paramA设置为false时:paramB的值可为  Session.AUTO_ACKNOWLEDGE,Session.CLIENT_ACKNOWLEDGE,DUPS_OK_ACKNOWLEDGE其中一个。
        paramA设置为true时:paramB的值忽略, acknowledgment mode被jms服务器设置为SESSION_TRANSACTED 。
        Session.AUTO_ACKNOWLEDGE为自动确认,客户端发送和接收消息不需要做额外的工作。
        Session.CLIENT_ACKNOWLEDGE为客户端确认。客户端接收到消息后,必须调用javax.jms.Message的acknowledge方法。jms服务器才会删除消息。
    DUPS_OK_ACKNOWLEDGE允许副本的确认模式。一旦接收方应用       程序的方法调用从处理消息处返回,会话对象就会确认消息的接收;而且允许重复确认。在需要考虑资源使用时,这种模式非常有效。

4,通过会话创建一个消息

5,创建一个消息生产者,并由生产者将消息发送给服务器

6,创建一个消费者,用来接受消息

注意最后输出的消息时,需要强制转换类型
详细代码:
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;

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

public class Test1 {

/**
 * @param args
 * @throws JMSException 
 */
public static void main(String[] args) throws JMSException {
    //1,建立与消息服务器的连接
    //这里用的是本机作为消息的存储没有用activemq服务器
    ConnectionFactory factory =new ActiveMQConnectionFactory("vm://localhost");
    Connection connerction=factory.createConnection();
    connerction.start();
    //2,创建一个队列
    Queue queue=new ActiveMQQueue("testQueue");
    //3,创建一个回话
    final Session session=connerction.createSession(false, Session.AUTO_ACKNOWLEDGE);
    //通过会话来创建一个消息
    Message message=session.createTextMessage("hello jms");
    //创建一个生产者
    MessageProducer messageProducer=session.createProducer(queue);
    //生产者将消息发送给服务器
    messageProducer.send(message);

    System.out.println("消息已经发送到服务器");

    //创建一个消费者来接受消息
    MessageConsumer messageConsumer=session.createConsumer(queue);

    Message recevicemesage=messageConsumer.receive();

    System.out.println("接到了消息:"+((TextMessage)(recevicemesage)).getText());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值