2014-05-14 2 views
4

EMS 주제에 대한 테스트 메시지를 게시하고 지침을 사용할 수 있습니다. 지금까지 나는 이것을 할 수 있었다.Java를 사용하여 EMS 주제에 메시지를 게시하는 방법

import com.tibco.tibjms.TibjmsConnectionFactory; 
import com.tibco.tibjms.TibjmsTopicConnectionFactory; 

public class Connect { 
    public static void main(String[] args) { 

     String url = "tcp://host:6600"; 
     TibjmsConnectionFactory cf = new TibjmsTopicConnectionFactory(url); 

     cf.setUserName("user1"); 
     cf.setUserPassword(""); 
     System.out.println(cf); 
    } 
} 

다음과 같은 결과가 나온다. 나는 주제 "항목 1"또는 큐 "Q1"나는 몇 시간 동안 EMS를 손도 안

TopicConnectionFactory[URL=tcp://localhost:6600;clientID=null;Properties={com.tibco.tibjms.factory.password=, com.tibco.tibjms.factory.username=user1}] 

답변

7

"tibjmsMsgProducer.java"를 EMS 8.0 "sample"폴더에서 수정하여 다음 코드를 생성했습니다. 자세한 내용은이 폴더의 모든 Java 예제를보십시오.

이 코드는 기본 사용자와 암호를 사용하여 간단한 EMS에 하드 코딩 된 텍스트 메시지를 게시합니다. 대상 주제는 "topic1"(마지막 행에 있음)입니다.

import javax.jms.Connection; 
import javax.jms.ConnectionFactory; 
import javax.jms.Destination; 
import javax.jms.JMSException; 
import javax.jms.MessageProducer; 
import javax.jms.Session; 
import javax.jms.TextMessage; 

public class tibjmsMsgTopicProducer { 

static String serverUrl = "localhost"; 
static String userName = "admin"; 
static String password = "admin"; 

public static void sendTopicMessage(String topicName, String messageStr) { 

    Connection connection = null; 
    Session session = null; 
    MessageProducer msgProducer = null; 
    Destination destination = null; 

    try { 
     TextMessage msg; 

     System.out.println("Publishing to destination '" + topicName 
       + "'\n"); 

     ConnectionFactory factory = new com.tibco.tibjms.TibjmsConnectionFactory(
       serverUrl); 

     connection = factory.createConnection(userName, password); 

     /* create the session */ 
     session = connection 
       .createSession(javax.jms.Session.AUTO_ACKNOWLEDGE); 

     /* create the destination */ 
     destination = session.createTopic(topicName); 

     /* create the producer */ 
     msgProducer = session.createProducer(null); 

     /* publish messages */ 
     /* create text message */ 
     msg = session.createTextMessage(); 

     /* set message text */ 
     msg.setText(messageStr); 

     /* publish message */ 
     msgProducer.send(destination, msg); 

     System.out.println("Published message: " + messageStr); 

     /* close the connection */ 
     connection.close(); 

    } catch (JMSException e) { 
     e.printStackTrace(); 
    } 
} 

/*----------------------------------------------------------------------- 
* main 
*----------------------------------------------------------------------*/ 
public static void main(String[] args) { 
    tibjmsMsgTopicProducer.sendTopicMessage("topic1", 
      "This is the message content !"); 
} 

}

참고 : 당신은 또한 더 "엔터프라이즈 급"솔루션을 EMS with Spring-JMS을 사용할 수 있습니다. 위의 코드는 훨씬 간단합니다.

참고 2 : 메서드를 "고정"으로 만들었습니다. 이는 데모 용입니다. JMS에서는 연결에 많은 비용이 듭니다. 일반적으로 우리는 JMS를 재사용하려고합니다. Java 클래스를보다 잘 설정하려면 TIBCO에서 제공하는 모든 예제를 참조하십시오. 가능한 경우 연결을 인스턴스화하고 다시 사용하십시오. 또한 J2EE 또는 Spring 솔루션은 내장 된 연결 풀을 지원합니다.

+0

잘 수행했습니다. 어떤 아이디어 메시지 헤더 속성을 설정하는 방법? – Bala

+1

다음과 같이 입력하십시오 : msg.setStringProperty ("PROPNAME", "PROP_VALUE"); – GhislainCote

1

에 메시지를 게시하려면 어떻게 -하지만 기본적으로 EMS는 JMS 구현에 불과하다. 모든 구현 관련 항목이 숨겨져 있습니다. 주제에 대한 표준/표준 JMS 방법을 사용하여 Java 자습서 및 온라인 소스에서 좋은 예제를 찾을 수 있습니다. 추악한 샘플 코드를 여기에 저장하겠습니다 :-)

+0

@Alex Suo와의 일치 여기에 몇 가지 샘플 코드가 있습니다. http://www.novell.com/documentation/extend52/Docs/help/MP/jms/tutorial/pubSub-1.htm – Priyesh

0

this test project @ gelnyang 빌드를 살펴볼 수 있습니다. this은 EMS 메시지를 구체적으로 게시하는 클래스입니다. 이 프로젝트에서는 다른 EMS 관련 기능도 찾을 수 있습니다.