Wednesday, October 30, 2002

MQSeries Nasıl Kurulur

Bu yazının amacı Solaris 2.7 MQSeries 5.2 kurmayı öğretmek. Ayrıca JMS kullanarak bir örnek kuyruğa mesaj koymayı göstereceğiz.

MQ Kuralım


* İlk once Unix üzerinde mqm adlı bir kullanıcı yaratın.
* mqm adlı bir gurup yaratın.
* MQ program dosyasını IBM sitesinden indirin.
* pkgadd dosya_ismi kullanarak programı kurabilirsiniz. İşiniz bittikten sonra MQ /opt/mqm altında olacak.
* Şimdi JMS kütüphanesini kurmamız lazım. IBM sitesinden ma88_sol.tar adlı kayıdı bulup indirin. Bunu da pkgadd kullanarak kurun. İşiniz bitince program /opt/mqm/java altında olacak.
* /opt/mqm/java altındaki bütün JAR dosyalarını CLASSPATH'inize ekleyin.
* MQ kullanacak bütün Unix kullanıcılarının mqm gurubu altında olmasına dikkat edin.

Kuyruk Yaratmak

Kuyruk yaratmak için aşağıdakini uygulayın

crtmqm -q venus.queue.manager

Kuyruk gözleyicisini başlatmak için

strmqm

Solaris başlayınca otomatik olarak kuyruk gözleyicisi başlasın istiyorsanız, aşağıdaki satırları /etc/inetd.conf dosyasına ekleyin.

MQSeries stream tcp nowait mqm /opt/mqm/bin/amqcrsta amqcrsta -m venus.queue.manager

Bu satırları da /etc/services dosyasına ekleyin.

MQSeries       1414/tcp      # MQSeries channel listener

Aşağıdakiler için, MQ komut satırına inmeniz lazım.

$ runmqsc

0783889, 5765-B75 (C) Copyright IBM Corp. 1994, 2000. ALL RIGHTS RESERVED.
Starting MQSeries Commands.

- kuyruk yaratan komut budur
define qlocal (orange.queue)

-- kanala yaratan budur
DEF CHL('JAVA.CHANNEL ')CHLTYPE(SVRCONN)TRPTYPE(TCP)MCAUSER('')+
DESCR('Java icin ornek kanal')

-- komut satirindan cikmak icin
end

Tetikleyici gözlem programı için:

runmqtrm

Kanal baslangıç programı için:

runmqchi

Komut işlem programı için

strmqcsv

Örnek Java/JMS Nesnesi

Aşağıdaki kod sayesinde, yukarıda yarattığımız kuyruğa bağlanıp bir mesaj koymamiz mümkün.

import com.ibm.mq.jms.MQConnectionFactory;
import com.ibm.mq.jms.MQQueueConnectionFactory;
import java.io.PrintStream;
import javax.jms.*;
import com.ibm.mq.jms.JMSC;

public class Test
{

public static void main(String args[])
{
Test test = new Test();
test.addDataItem();
}

public Test()
{
kuyrukIdareciIsmi = "venus.queue.manager";
makinaIsmi = "localhost";
kanal = "JAVA.CHANNEL";
port = 1414;
kuyrukIsmi = "ORANGE.QUEUE";
transportType = JMSC.MQJMS_TP_CLIENT_MQ_TCPIP;
}

public void addDataItem()
{
try
{
MQQueueConnectionFactory baglantiFabrikasi = new MQQueueConnectionFactory();
System.out.println("kuyrukIdareciIsmi :" + kuyrukIdareciIsmi);
System.out.println("Makina ismi :" + makinaIsmi);
System.out.println("Kanal :" + kanal);
System.out.println("port :" + port);

baglantiFabrikasi.setQueueManager(kuyrukIdareciIsmi);
baglantiFabrikasi.setTransportType(nakilTuru);
baglantiFabrikasi.setHostName(makinaIsmi);
baglantiFabrikasi.setPort(port);
baglantiFabrikasi.setChannel(kanal);

QueueConnection kuyrukbaglantisi =
baglantiFabrikasi.createQueueConnection();

kuyrukbaglantisi.start();

QueueSession queuesession =
kuyrukbaglantisi.createQueueSession(false, getTransportType());

javax.jms.Queue kanal = queuesession.createQueue(getRemoteQueueName());

QueueSender queuesender = queuesession.createSender(queue);

ObjectMessage mesaj = queuesession.createObjectMessage();

mesaj.setObject(new String("---------------"));

queuesender.send(mesaj);

}
catch(JMSException jmsexception)
{
jmsexception.printStackTrace();
}
catch(Exception exception)
{
exception.printStackTrace();
}
}

public String getQueueManagerName()
{
return kuyrukIdareciIsmi;
}

public void setQueueManagerName(String s)
{
kuyrukIdareciIsmi = s;
}

public String getHostName()
{
return makinaIsmi;
}

public void setHostName(String s)
{
makinaIsmi = s;
}

public int getPort()
{
return port;
}

public void setPort(int i)
{
port = i;
}

public String getChannel()
{
return kanal;
}

public void setChannel(String s)
{
kanal = s;
}

public int getTransportType()
{
return nakilTuru;
}

public void setTransportType(int i)
{
nakilTuru = i;
}

public String getRemoteQueueName()
{
return kuyrukIsmi;
}

public void setRemoteQueueName(String s)
{
kuyrukIsmi = s;
}

private String kuyrukIdareciIsmi;
private String makinaIsmi;
private String kanal;
private int port;
private int nakilTuru;
private String kuyrukIsmi;
}

No comments: