一. ActiveMQ介紹
通過ActiveMQ消息服務(wù)交換消息。消息生產(chǎn)者將消息發(fā)送至消息服務(wù)嗽上,消息消費者則從消息服務(wù)接收這些消息次舌。這些消息傳送操作是使用一組實現(xiàn) ActiveMQ應(yīng)用編程接口 (API) 的對象來執(zhí)行的。
二. 軟件開發(fā)目的
2.1 軟件目的
利用消息中間件接口JMS兽愤、消息服務(wù)器ActiveMQ 和Java Swing實現(xiàn)一個簡單的聊天工具彼念,掌握消息中間件的應(yīng)用。
2. 2程序要求
- 實現(xiàn)界面化的聊天工具浅萧,支持二人之間互發(fā)消息逐沙。
- 發(fā)送消息過程中,發(fā)送這首先把消息發(fā)送到消息服務(wù)器ActiveMQ洼畅,接收者從消息服務(wù)器上取消息酱吝;消息發(fā)送者和接收者不需要同時運行(在線),實現(xiàn)即使對方處在離線狀態(tài)下也可以進(jìn)行消息的發(fā)送和接收土思。
三. 軟件實現(xiàn)
3.1 功能實現(xiàn)
使用MessageSender進(jìn)行消息發(fā)送务热,使用MessageReceiver進(jìn)行消息接收忆嗜。在Swing中,當(dāng)用戶點擊開始聊天按鈕后MessageReceiver會建立一個線程進(jìn)行監(jiān)聽消息崎岂,如果有新的消息則向?qū)υ捒蛑刑砑有畔ⅰ?br> 關(guān)鍵線程函數(shù):
MessageSender messageSender = new MessageSender(targe,url,user,password,str);
new Thread(messageSender).start();
new Thread(new MessageReceiver(user,url,null,null,textArea)).start();
MessageReceiver中的線程操作捆毫,如果接收到信息就更改信息。
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
textArea.append("receive : "+ receiveMessage.getText()+"\n");;
} catch (JMSException e) {
e.printStackTrace();
}}});
四.運行結(jié)果
當(dāng)對方不在線時冲甘,依舊可以發(fā)送消息绩卤,當(dāng)對方上線后可以正常接收。