java 创建jms.session_JMS Java消息服务队列的使用

packagecom.sec;importjavax.jms.Connection;importjavax.jms.ConnectionFactory;importjavax.jms.Destination;importjavax.jms.JMSException;importjavax.jms.Message;importjavax.jms.MessageConsumer;importjavax.jms.MessageListener;importjavax.jms.MessageProducer;importjavax.jms.Session;importjavax.jms.TextMessage;importorg.apache.activemq.ActiveMQConnectionFactory;importorg.apache.activemq.command.ActiveMQDestination;importorg.apache.activemq.ActiveMQConnection;public classJmsClient

{privateString url;privateString regRequestQueue;privateString regResponseQueue;privateString requestQueue;privateString responseQueue;privateString id;privateString selector;privateConnection connection;privateSession session;privateDestination regRequestDestination;privateDestination regResponseDestination;privateDestination requestDestination;privateDestination responseDestination;privateMessageProducer regProducer;privateMessageConsumer regConsumer;privateMessageProducer requestProducer;privateMessageConsumer requestConsumer;privateTextMessage textMessage;public void init() throwsJMSException {//-----------------创建会话-----------------------------------------------------//1.创建连接工厂

ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("user", "user", url);//2.创建Connection

connection =connectionFactory.createConnection();//3.启动连接

connection.start();//4.创建会话 第一个参数:是否在事务中去处理, 第二个参数.应答模式

session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//----------------初始化注册变量--------------------------------------------------//1.创建一个目标 注册请求队列

regRequestDestination =session.createQueue(regRequestQueue);//2.创建一个生产者

regProducer =session.createProducer(regRequestDestination);//3.创建一个目标 注册响应队列

regResponseDestination =session.createQueue(regResponseQueue);//4.创建一个注册响应队列消费者

regConsumer =session.createConsumer(regResponseDestination);//5.监听注册响应队列

setRegResponseQueueListener();//----------------初始化业务请求变量-----------------------------------------------//1.创建一个目标 业务请求队列

requestDestination =session.createQueue(requestQueue);//2.创建一个业务请求队列生产者

requestProducer =session.createProducer(requestDestination);//3.创建一个目标业务响应队列

responseDestination =session.createQueue(responseQueue);

}//注册请求过程

public void sendRegRequest() throwsJMSException {//1.格式转换

textMessage = session.createTextMessage("regRequestQueue");//2.发送消息

regProducer.send(textMessage);

System.out.println("发送消息:regRequestQueue");

}//业务请求过程

public void sendRequest(String msg) throwsJMSException {//1.格式转换

textMessage =session.createTextMessage(msg);

textMessage.setStringProperty("ID", id);//2.发送消息

requestProducer.send(textMessage);

System.out.println("发送消息:" + id + "," +msg);

}//关闭jms连接过程

public void sendCloseRequest() throwsJMSException {

sendRequest("close");

}public void setRegResponseQueueListener() throwsJMSException {//1.创建一个监听器 监听注册响应队列的内容

regConsumer.setMessageListener(newMessageListener() {public voidonMessage(Message message) {

textMessage=(TextMessage) message;try{//2.获得业务响应队列的id

id =textMessage.getText();//3.创建一个业务响应队列消费者

selector = "ID='" + id + "'";

requestConsumer=session.createConsumer(responseDestination, selector);//4.监听业务响应队列

setResponseQueueListner();//5.打印提示

System.out.println("成功读取注册响应队列的内容");//6.关闭注册响应队列

regConsumer.close();

}catch(JMSException e) {

e.printStackTrace();

}

}

});

}public void setResponseQueueListner() throwsJMSException {//3.创建一个业务响应队列监听器

requestConsumer.setMessageListener(newMessageListener() {//4.不要在监听器中关闭自己,可能会不正常

public voidonMessage(Message message) {

TextMessage textMessage=(TextMessage) message;try{

String msg=textMessage.getText();

System.out.println("i am " + id +", i receive =" +msg);

}catch(JMSException e) {

e.printStackTrace();

}

}

});

}public void close() throwsJMSException {

System.out.println("begin close");//session.commit();//如果createSession的第一个参数为true,则transacted,可以用commit,否则不能用commit

session.close(); //先关闭会话

connection.close(); //最后关闭连接

System.out.println("end close");

}public void deleteQueue() throwsJMSException {//关闭队列

if(responseDestination != null) {

((ActiveMQConnection)connection).destroyDestination((ActiveMQDestination) responseDestination);

}

}publicString getUrl()

{returnurl;

}public voidsetUrl(String url)

{this.url =url;

}publicString getRegRequestQueue()

{returnregRequestQueue;

}public voidsetRegRequestQueue(String regRequestQueue)

{this.regRequestQueue =regRequestQueue;

}publicString getRegResponseQueue()

{returnregResponseQueue;

}public voidsetRegResponseQueue(String regResponseQueue)

{this.regResponseQueue =regResponseQueue;

}publicString getRequestQueue()

{returnrequestQueue;

}public voidsetRequestQueue(String requestQueue)

{this.requestQueue =requestQueue;

}publicString getResponseQueue()

{returnresponseQueue;

}public voidsetResponseQueue(String responseQueue)

{this.responseQueue =responseQueue;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Classes contained in javax.jms.jar: javax.transaction.xa.XAResource.class javax.jms.BytesMessage.class javax.jms.Message.class javax.jms.JMSException.class javax.jms.Destination.class javax.jms.DeliveryMode.class javax.jms.Connection.class javax.jms.Session.class javax.jms.ConnectionMetaData.class javax.jms.ExceptionListener.class javax.jms.ServerSessionPool.class javax.jms.ConnectionConsumer.class javax.jms.Topic.class javax.jms.MapMessage.class javax.jms.ObjectMessage.class javax.jms.StreamMessage.class javax.jms.TextMessage.class javax.jms.MessageListener.class javax.jms.MessageProducer.class javax.jms.MessageConsumer.class javax.jms.Queue.class javax.jms.TopicSubscriber.class javax.jms.QueueBrowser.class javax.jms.TemporaryQueue.class javax.jms.TemporaryTopic.class javax.jms.ServerSession.class javax.jms.ConnectionFactory.class javax.jms.MessageNotReadableException.class javax.jms.MessageNotWriteableException.class javax.jms.QueueConnection.class javax.jms.QueueSession.class javax.jms.QueueReceiver.class javax.jms.QueueSender.class javax.jms.QueueConnectionFactory.class javax.jms.QueueRequestor.class javax.jms.TopicConnection.class javax.jms.TopicSession.class javax.jms.TopicPublisher.class javax.jms.TopicConnectionFactory.class javax.jms.TopicRequestor.class javax.jms.XAConnection.class javax.jms.XASession.class javax.jms.XAConnectionFactory.class javax.jms.XAQueueConnection.class javax.jms.XAQueueSession.class javax.jms.XAQueueConnectionFactory.class javax.jms.XATopicConnection.class javax.jms.XATopicSession.class javax.jms.XATopicConnectionFactory.class javax.jms.MessageEOFException.class javax.jms.TransactionRolledBackException.class javax.jms.MessageFormatException.class javax.jms.IllegalStateException.class javax.jms.JMSSecurityException.class javax.jms.ResourceAllocationException.class javax.jms.TransactionInProgressException.class javax.jms.InvalidDestinationException.class javax.jms.InvalidClientIDException.class javax.jms.InvalidSelectorException.class

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值