Bu Sayfayı Paylaş:

Kavram

JMS - Java Message Service

Tanım: Mesaj yaratma, gönderme ve alm işlemlerini asenkron olarak destekleyen JEE standartının bir parçası olan API

Veri

Bir Topice Mesaj Ekleyen Örnek

Aşağıda bir Topic'e mesaj ekleyen bir örnek görülmektedir:
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicPublisher;
import javax.jms.TopicSession;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class TopicHelper {

	public static void addTopic() throws NamingException, JMSException{
			   
		InitialContext initialContext = new InitialContext();

		TopicConnectionFactory  connectionFactory =
			(TopicConnectionFactory)initialContext.lookup("ConnectionFactory-Test");

		TopicConnection topicConnection = connectionFactory.createTopicConnection();

		Topic topic = (Topic) initialContext.lookup("Topic-Test");

		TopicSession session = topicConnection.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);

		topicConnection.start();

		TopicPublisher publisher = session.createPublisher(topic);

		Message message = session.createMessage();

		publisher.publish(message);

		System.out.println("Topic Eklendi ..");
			   
	}

}
Yukarıdaki örnekte addTopic yöntemi çağrıldığında bir mesaj oluşturulup Topic'e eklenecektir.

Veri

wlclient Client İle Bir Topice Abone Olan ve Mesaj alan Bir Örnek

wlclient kütüphanesi WebLogic için thin client adı verilen standalone console uygulamaları geliştirmenizi ve WebLogic'e RMI üzerinden erişmenizi sağlayan bir kütüphanedir. Aşağıdaki örnekte bir Topic için abone olan bir client örneği görülmektedir :
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicSession;
import javax.jms.TopicSubscriber;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
 
public class TopicReceive implements MessageListener{
             
	public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";

	public final static String JMS_FACTORY = "ConnectionFactory-Test";
	public final static String TOPIC = "Topic-Test";

	@Override
	public void onMessage(Message arg0) {

		System.out.println("***** Topic is received");
			   
	}

	public void init() throws NamingException, JMSException{
			   
		String URL="t3://localhost:7001";
	   
		Hashtable<String, String> env = new Hashtable<String, String>();
		env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
		env.put(Context.PROVIDER_URL, URL);
	   
		InitialContext initialContext=new InitialContext(env);
	   
		TopicConnectionFactory connectionFactory = (TopicConnectionFactory)
			PortableRemoteObject.narrow(initialContext.lookup(JMS_FACTORY),
			TopicConnectionFactory.class);
	   
	   
		TopicConnection connection  = connectionFactory.createTopicConnection();
	   
		TopicSession session = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
	   
		Topic topic = (Topic) PortableRemoteObject.narrow(initialContext.lookup(TOPIC), Topic.class);
	   
		TopicSubscriber subscriber = session.createSubscriber(topic);
	   
		subscriber.setMessageListener(this);
	   
		connection.start();
			   
			   
	}

	public static void main(String[] args) throws NamingException, JMSException {
			   
		TopicReceive topicReceive=new TopicReceive();
		topicReceive.init();
			   
	}
 
}
Örnekte Topic-Test adı verilen bir Topic için abone oluyoruz. Listener olarak sınıf kendisini veriyor. Yeni bir mesaj eklenirse onMessage yöntemi çağrılacaktır. weblogic.jndi.WLInitialContextFactory , WebLogic'in naming service'ine erişmek için kullanılır. PortableRemoteObject içindeki narrow metodu ise RMI protokolü ile uzaktaki nesneyi local nesneye cast etme işlemini yapar.



Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir