Основной JMS-запрос - PullRequest
       7

Основной JMS-запрос

0 голосов
/ 21 января 2010

У меня есть набор параметров, которые мне нужно использовать для доступа к очереди JMS.

Может ли кто-нибудь предоставить мне базовый пример того, как я могу отправить блок XML на ожидающий сервер, используя эти параметры. Для этой первоначальной версии я не против жесткого кодирования этих параметров.

Я сейчас пытаюсь это:

Context ctx = new InitialContext();
QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) ctx.lookup("QueueConnectionFactory");
Queue queue = (Queue) ctx.lookup("OCP.GET.PRODUCTS.COMSRV");
QueueConnection queueConnection = queueConnectionFactory.createQueueConnection();
QueueSession queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
QueueSender queueSender = queueSession.createSender(queue);
TextMessage message = queueSession.createTextMessage();
message.setText(xmlString);

Но я понятия не имею, как установить параметры для Host, Port, QueueManager или Channel

Параметры, предоставленные мне:

  • Менеджер: OCP.QMGR
  • Канал: OCP.SVRCONN
  • Порт: 14234
  • Хост: host.server.com
  • sentToQueue: OCP.GET.PRODUCTS.COMSRV
  • replyToQueue: COMSRV.GET.PRODUCTS.OCP

Я очень новичок в Java и JMS и начинаю тонуть в этом.

1 Ответ

4 голосов
/ 21 января 2010

Насколько я понимаю, вы пытаетесь подключиться к MQSeries (QueueManager и Channel являются концепциями MQ и не являются частью AFAIK JMS API), поэтому я думаю, что вам придется использовать специальный клиентский API MQ. Я действительно не эксперт по MQ, но кажется, что приведенный ниже код (см. Реализация независимых от поставщика JMS-решений ) близок к тому, что вы ищете:

MQQueueConnectionFactory qconFactory = new MQQueueConnectionFactory();
qconFactory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP); //Used when the MQSeries server is on a different host from the client
qconFactory.setQueueManager(queueManager);
qconFactory.setHostName(hostName);
qconFactory.setPort(port);
qconFactory.setChannel(channel);
connection = qconFactory.createQueueConnection();
session1 = connection.createQueueSession(true, Session.CLIENT_ACKNOWLEDGE);.....

Как я уже сказал, я не специалист по MQ, но MQQueueConnectionFactory, похоже, знает о большинстве вещей, о которых вы говорите.


Примечание:

При использовании JNDI необходимо настроить свойства среды JNDI, такие как исходная фабрика контекста и URL-адрес поставщика . По сути, эти свойства используются для объявления, какой класс использовать для создания начального контекста и где найти сервер JNDI. Очевидно, что значения этих свойств зависят от службы JNDI, к которой вы подключаетесь.

Вы можете указать свойства среды, используя непустой конструктор InitialContext и передав ему параметр environment. Например, чтобы подключиться к сервису BEA WebLogic JNDI:

Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
p.put(Context.PROVIDER_URL,"t3://myhost:7001");
ctx = new InitialContext(p);

Или вы можете предоставить jndi.properties файл и использовать не-arg InitialContext конструктор . Например, чтобы подключиться к службе IBM WebSphere JNDI, вы должны поместить файл jndi.properties со следующим содержимым в classpath:

java.naming.provider.url=iiop://myhost:9001
java.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactory

Этот второй подход, конечно, более переносим, ​​поскольку вы не жестко кодируете значения параметров в коде Java (хотя это может и не быть проблемой).

Теперь, в вашем случае, я не могу сказать, нужно ли вам это (и тем более, какие значения использовать), так как вы не предоставили никаких подробностей о вашем контексте (например, о сервере приложений, провайдере JMS или Messaging). решение, к которому вы пытаетесь подключиться).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...