📄 topicsubscribesynchronous.java
字号:
package com.sjx.jms;
import java.util.*;
import javax.jms.*;
import javax.naming.*;
/**
* @author sjx
* openJms 非持久订阅同步接收演示
*/
public class TopicSubscribeSynchronous {
private Context context = null;
private TopicConnectionFactory factory = null;
private TopicConnection topicConnection = null;
private TopicSession topicSession = null;
private Topic topic = null;
private TopicSubscriber topicSubscriber = null;
window w = null;
public TopicSubscribeSynchronous(window w){
this.w = w;
try {
System.out.println("定购消息接收启动:");
//取得JNDI上下文和连接
context = GetJini.getContext();
//取得Topic的连接工厂和连接
factory =GetJini.getTopicConnectionFactory(context);
topicConnection = factory.createTopicConnection();
topicConnection.start();
//创建Topic的会话,用于接收信息
topicSession = topicConnection.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);
topic = (Topic) context.lookup("topic1");
topicSubscriber =topicSession.createSubscriber(topic);
} catch (NamingException e) {
e.printStackTrace();
} catch (JMSException e) {
e.printStackTrace();
}
}
public void Receive(){
try {
//收满10条订阅消息则退出
for (int i=0; i<10; i++) {
//同步消息接收,使用receive方法,堵塞等待,直到接收消息
TextMessage message = (TextMessage) topicSubscriber.receive();
if(message.getText() != null){
System.out.println("接收订阅消息["+i+"]: " + message.getText());
w.topoicTextArea.append("接收订阅消息["+i+"]: " + message.getText());
}
Thread.sleep(1000);
}
System.out.println("订阅接收结束.");
w.topoicTextArea.append("订阅接收结束.");
} catch (JMSException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void close(){
GetJini.closeTopicSubscriber(topicSubscriber);
GetJini.closeTopicSession(topicSession);
GetJini.closeTopicConnection(topicConnection);
GetJini.closeContext(context);
}
/* public static void main(String args[]){
new TopicSubscribeSynchronous().Receive();
}*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -