Easy Jms Receiver

หลังจากที่เราได้ทำการส่ง Jms Message จากบทความ Easy Jms Sender แล้วเราจะมาทำตัว Receiver กันบ้างครับ โดยลักษณะก็จะคลายกับตัวส่งครับ คือสร้าง Queue Connection ขึ้นมา สร้าง Session และ สร้าง Queue เมื่อเราได้ทั้งสามตัวนี้เราก็จะสามารถสร้าง Queue Receiver ได้ครับ ในบทความนี้ผมของเปลี่ยนแปลงนิดหนึ่งคือผมจะใช้ Maven เข้ามาช่วย ซึ่งจะทำให้การทำงานของเราง่ายขึ้นครับ

ก่อนอื่นเรามาทำการสร้างโปรเจคกันก่อนเป็น Maven Project แล้วเลือกเป็น Java Application

กด Next เพื่อไปยังขั้นตอนถัดไป โดยผมจะตั้งค่าตามภาพด้านล่างครับ

เมื่อสร้างโปรเจคเสร็จจะได้ออกมาตามภาพครับ

ผมจะทำการแก้ไขไฟล์ pom.xml ซึ่งเป็นไฟล์ที่เอาไว้ใช้จัดการ maven โดยการเพิ่ม dependency เข้าไป

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>co.cc.greannetwork</groupId>
    <artifactId>EasyJmsReceiver</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>EasyJmsReceiver</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.mq</groupId>
            <artifactId>imq</artifactId>
            <version>4.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.mq</groupId>
            <artifactId>jms</artifactId>
            <version>4.5.2</version>
        </dependency>    
    </dependencies>
</project>

ส่วนที่ผมเพิ่มเข้าไปคือ

<dependency>
    <groupId>org.glassfish.mq</groupId>
    <artifactId>imq</artifactId>
    <version>4.5.2</version>
</dependency>
<dependency>
    <groupId>org.glassfish.mq</groupId>
    <artifactId>jms</artifactId>
    <version>4.5.2</version>
</dependency>  

เมื่อเพิ่มเข้าไปแล้วให้คลิกขวาที่ Project เลือก Clean and Build เพื่อให้ maven ทำการดาวน์โหลด jar ไฟล์จาก Internet

เพียงเท่านี้เราก็เสร็จสิ้นขั้นตอนการติดตั้งโปรเจคแล้วครับ ต่อไปก็จะเป็นการเขียนโค๊ด เมื่อเราทำการสร้างโปรเจคขึ้นมา จะมีคลาสๆหนึ่งติดมาให้เราด้วยนันคือ App.java ซึ่งผมจะขอใช้คลาสนี้ในการเขียน Jms Receiver เลยนะครับ


package co.cc.greannetwork.easyjmsreceiver;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.QueueConnection;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args ) throws JMSException
    {
        QueueConnection con = createConnection();
        QueueSession createQueueSession = con.createQueueSession(true, Session.SESSION_TRANSACTED);
        javax.jms.Queue createQueue = createQueueSession.createQueue("MyQueue");
        QueueReceiver createReceiver = createQueueSession.createReceiver(createQueue);
        con.start();
        createReceiver.setMessageListener(new MessageListener() {

            public void onMessage(Message msg) {
                    try {
                        TextMessage tm = (TextMessage) msg;
                        System.out.println("JMS Receiver Get Message : "+tm.getText());
                    } catch (JMSException ex) {
                        Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
                    }
            }
        });
// ไม่ปิด Connection เพื่อให้ Receiver ทำการ Listener ไปเรื่อยๆ
//        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();
    }
}

จะเห็นว่าว่าคราวนี้เรานำเอา QueueSession มาทำการ Receiver แทนการ createTextMessage แล้วทำการสร้าง Listener มาคอยรับค่าจาก Jms Broker โปรเจคนี้เมื่อรันขึ้นมาแล้วถ้าทำงานได้ถูกต้องจะแสดงผลลัพธ์ที่ Output ด้านล่างที่เราใช้เขียน code

และเราสามารถทำการปิดการรันโปรเจคได้จาก status bar โดยคลิกปิดตรงที่ผมวงกลมไว้ตามภาพด้านล่างครับ

เพียงเท่านี้เราก็สามารถรับส่ง JMS อย่างง่ายได้แล้วครับ

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



me on google plus+Jirawong Wongdokpuang

Advertisements

One thought on “Easy Jms Receiver

  1. 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