Easy Jms Sender

เมื่อเราได้ทำการติดตั้ง JMS Broker แล้วเรามาลองส่ง JMS กันดูครับ โดยผมจะใช้ JMS Broker ที่ได้ทำการติดตั้งในบทความ Install OpenMQ on Solaris เป็น Message Server และใช้ Netbeans 7.2 เป็น Editor นะครับ โดยผมจะขออธิบายการทำงานของ jms คร่าวๆก่อนนะครับ jms นั้นจะประกอบด้วย Queue Connection Factory ซึ่งเป็นตัวสร้าง Queue โดย Queue นั้นจะเป็นตัวอ้างถึงเมื่อเราต้องการส่ง Message เช่น Queue Connection Factory ทำการสร้าง Queue ชื่อ MyQueue เมื่อเราจะทำการส่ง Message เราจะทำการส่งให้ MyQueue แล้วเมื่อเรารับ Message เราก็เรียก MyQueue เพื่อรับ Message ทีนี้เรามาลองเขียน การส่ง Jms ดูครับ

โดยขั้นแรกเมื่อเราเปิด Netbean ขึ้นมาให้เราสร้างโปรเจ็บแบบ Java Application

จากนั้นให้กด Next เพื่อไปยังขั้นตอนถัดไป ในส่วนของขั้นตอนนี้จะเป็นการตั้งชื่อโปรเจคผมจะตั้งชื่อว่า EasyJmsSender พร้อมกับตั้งชื่อ Create Main Class เป็น cc.co.greannetwork.EasyJmsSender

จากนั้นเราต้องทำการเพิ่ม jar ไฟล์ที่เราต้องการใช้งานเสียก่อนโดยการคลิกขวาที่ Libraries เลือก Add JAR/Folder…

jar ไฟล์ที่เราต้องใช้นั้นจะติดมาอยู่กับ openmq ซึ่งถ้าอ้างอิงตาม path ของ Install OpenMQ on Solaris ไฟล์ jar จะอยู่ที่ /opt/openmq/mq/lib/ ซึ่งเราจะใช้สองไฟล์คือ imq.jar และ jms.jar เมื่อเพิ่มแล้ว Netbeans จะแสดงไฟล์ที่เราแอดมาตามภาพข้างล่าง

เมื่อเราเตรียมทุกอย่างเรียบร้อยแล้วต่อไปเราก็จะมาเขียนโค๊ดกัน

/**
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cc.co.greannetwork;

import com.sun.messaging.Queue;
import javax.jms.JMSException;
import javax.jms.QueueConnection;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;

/**
 *
 * @author Grean
 */
public class EasyJmsSender {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws JMSException {
        QueueConnection con = createConnection();
        QueueSession createQueueSession = con.createQueueSession(true, Session.SESSION_TRANSACTED);
        Queue createQueue = (Queue) createQueueSession.createQueue("MyQueue");
        TextMessage createTextMessage = createQueueSession.createTextMessage("EasyJmsSender Sending...");
        QueueSender createSender = createQueueSession.createSender(createQueue);
        createSender.send(createTextMessage);
        createQueueSession.commit();
        createQueueSession.close();
        con.close();
    }

    private static QueueConnection createConnection() throws JMSException {
        com.sun.messaging.QueueConnectionFactory qcf = new com.sun.messaging.QueueConnectionFactory();
        qcf.setProperty(com.sun.messaging.ConnectionConfiguration.imqAddressList, "192.168.17.129:7676");
        qcf.setProperty(com.sun.messaging.ConnectionConfiguration.imqDefaultUsername, "admin");
        qcf.setProperty(com.sun.messaging.ConnectionConfiguration.imqDefaultPassword, "admin");
        return qcf.createQueueConnection();
    }
}

ใส่ส่วนของ method createConnection จะทำการสร้าง Queue Connection Factory ขึ้นมาโดยจะระบุตำแหน่งของ Jms Broker ซึ่งเครื่องที่เป็น Jms Broker ของผมจะอยู่ที่ ip 192.168.17.129 และใช้ port 7676 ซึ่งเป็น default port ในการเชื่อมต่อ และทำการใส่ username และ password เป็น admin (default username และ password ที่มีมาให้คือ admin กับ guest)

เมื่อได้ queue connection แล้วเราจะสร้าง queue session ขึ้นมาโดยผมเลือกสร้างเป็นแบบใช้ Transaction ในบรรทัดที่ 26 จากนั้นเราจะใช้ queueu session สร้าง queue,queue sender และ text message สำหรับตัว text message คือ message ที่เราต้องการส่งไปซึ่งผมส่งคำว่า “EasyJmsSender Sending…” เมื่อได้ text message เราจะใช้ queue sender ทำการส่ง textmessage และทำการปิด Connection เพียงเท่านี้ Message ของเราก็จะอยู่บน Jms Broker รอผู้มารับ Message ไปครับ

Source Code : https://github.com/GreanNetworK/EasyJmsSender.git



me on google plus+Jirawong Wongdokpuang

Advertisements

2 thoughts on “Easy Jms Sender

  1. Pingback: Easy Jms Receiver « GreannetworK
  2. Pingback: JMS Tutorial « GreannetworK

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s