package com.topic.test;
import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import com.topic.test.ConsumerTool;
public class TopicDemo5{
protected Shell shell;
private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
private static Text config_ip_subscribe;
Text t_message_subscriber;
//private Text t_message_subscriber;
private Text config_ip_publish;
private Text t_message_publisher;
String message_hold="";
//IP配置:tcp://192.168.1.124:61616
/**
* Launch the application.
* @param args
* @throws InterruptedException
*/
public static void main(String[] args){
TopicDemo5 window = new TopicDemo5();
window.open();
}
/**
* Open the window.
*/
public void open() {
Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
/**
* Create contents of the window.
*/
protected void createContents() {
shell = new Shell();
shell.setSize(496, 627);
shell.setText("\u53D1\u5E03\u8BA2\u9605\u6A21\u5F0F");
Label lblFen = formToolkit.createSeparator(shell, SWT.HORIZONTAL);
lblFen.setBounds(22, 288, 446, 33);
Label lblsubscriber = new Label(shell, SWT.NONE);
lblsubscriber.setBounds(22, 23, 153, 24);
formToolkit.adapt(lblsubscriber, true, true);
lblsubscriber.setText("\u6D88\u606F\u6D88\u8D39\u8005-subscriber ");
Button button = new Button(shell, SWT.NONE);
//监听从输入的IP地址发送的消息
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
String user = ActiveMQConnection.DEFAULT_USER;
String password = ActiveMQConnection.DEFAULT_PASSWORD;
//private String url =ActiveMQConnection.DEFAULT_BROKER_URL;
//String url="tcp://192.168.1.124:61616";
String url=config_ip_subscribe.getText();
String subject = "mytopic";
Destination destination = null;
Connection connection = null;
Session session = null;
MessageConsumer consumer = null;
//Boolean isconnection=false;
try{
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(user, password, url);
connection = connectionFactory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
destination = session.createTopic(subject);
consumer = session.createConsumer(destination);
connection.start();
consumer.setMessageListener(new MessageListener() {
public void onMessage(Message m) {
try {
//System.out.println("Consumer get "+ ((TextMessage) m).getText());
message_hold+="Consumer get "+ ((TextMessage) m).getText()+",";
//System.out.println(message_hold);
//t_message_subscriber.setText(message_hold);
} catch (JMSException e) {
e.printStackTrace();
}
}
});
//connection.setExceptionListener(this);
//isconnection=true;
//t_message_subscriber.setText("Consumer:->Begin listening...");
MessageBox messagesuccess=new MessageBox(shell,SWT.YES);
messagesuccess.setText("提示");
messagesuccess.setMessage("开始进行消息监听");
messagesuccess.open();
System.out.println("Consumer:->Begin listening...");
}catch(Exception ex){
ex.printStackTrace();
}finally{
}
}
});
button.setBounds(364, 60, 75, 34);
formToolkit.adapt(button, true, true);
button.setText("\u5F00\u59CB\u76D1\u542C");
config_ip_subscribe = new Text(shell, SWT.BORDER);
config_ip_subscribe.setBounds(27, 60, 297, 34);
formToolkit.adapt(config_ip_subscribe, true, true);
t_message_subscriber = new Text(shell, SWT.BORDER|SWT.MULTI|SWT.WRAP|SWT.V_SCROLL);
t_message_subscriber.setBounds(27, 116, 327, 166);
formToolkit.adapt(t_message_subscriber, true, true);
Label lblpublisher = new Label(shell, SWT.NONE);
lblpublisher.setBounds(32, 325, 128, 24);
formToolkit.adapt(lblpublisher, true, true);
lblpublisher.setText("\u6D88\u606F\u751F\u4EA7\u8005-Publisher");
config_ip_publish = new Text(shell, SWT.BORDER);
config_ip_publish.setBounds(22, 355, 302, 33);
formToolkit.adapt(config_ip_publish, true, true);
Button button_1 = new Button(shell, SWT.NONE);
//消息发布
button_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
String user = ActiveMQConnection.DEFAULT_USER;
String password = ActiveMQConnection.DEFAULT_PASSWORD;
//private String url = ActiveMQConnection.DEFAULT_BROKER_URL;
//String url="tcp://192.168.1.124:61616";
String url=config_ip_publish.getText();
String subject = "mytopic";
Destination destination = null;
Connection connection = null;
Session session = null;
MessageProducer producer = null;
String show_message="";
try{
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(user, password, url);
connection = connectionFactory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
destination = session.createTopic(subject);
producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
TextMessage msg = session.createTextMessage(t_message_publisher.getText());
connection.start();
show_message="Producer:->Sending message: " + t_message_publisher.getText();
//System.out.println("Producer:->Sending message: " + t_message_publisher.getText());
producer.send(msg);
//System.out.println("Producer:->Message sent complete!");
t_message_publisher.setText(show_message);
//发送完毕,弹出对话框
MessageBox messagesuccess=new MessageBox(shell,SWT.YES);
messagesuccess.setText("提示");
messagesuccess.setMessage("消息发送完成");
messagesuccess.open();
}catch(Exception ex){
ex.printStackTrace();
}finally{
try{
System.out.println("Pro