Как сделать сообщение JMS отправить в MQ для полного совершения?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как сделать сообщение JMS отправить в MQ для полного совершения?

Сообщение Anonymous »

У меня есть ухо, которое я развертываю на сервере приложений WebSphere, который использует функцию для отправки сообщения в MQ с помощью JMS и получает сообщение в другой очереди .:
ConnectionFactory cf = null;
InitialContext context = null;
String[] arrDatos_SR = null;

Connection conn = null;
Session session = null;
Queue queue = null;
Queue queue2 = null;

Destination dest = null;
Destination dest2 = null;
MessageConsumer consumer = null;
MessageProducer producer = null;
TextMessage message = null;

String comando = "";
int tamanio = 0;
String tamanio2 = "";
String cadena = "";

try {
context = new InitialContext();
cf = (ConnectionFactory) context.lookup(arrDatos[1].trim());
conn = cf.createConnection();
session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
queue = (Queue) context.lookup(arrDatos[2].trim());
queue2 = (Queue) context.lookup(arrDatos[3].trim());
dest = (Destination) queue;
dest2 = (Destination) queue2;

producer = session.createProducer(dest);

// Create a text message using the queue session.
TextMessage textMessage = session.createTextMessage();

textMessage.setText(arrDatos[4]);

textMessage.setJMSReplyTo(dest2);
textMessage.setJMSMessageID(arrDatos[6]);
textMessage.setJMSCorrelationID(arrDatos[7]);
producer.send(textMessage);

} catch (NamingException e) {
// TODO Auto-generated catch block
logger.error("MQSendReceive() - Exception e2 = "
+ e, e);
} catch (JMSException e) {
// TODO Auto-generated catch block
logger.error("MQSendReceive() - Exception e2 = "
+ e, e);
}

arrDatos[5] = arrDatos[5].trim();

try{
conn.start();
consumer = session.createConsumer(dest2);
Message receivedMessage = consumer.receive(Long.parseLong(arrDatos[5]) * 1000);

if(receivedMessage != null)
{
message = (TextMessage)receivedMessage;
comando = message.getText();
comando = comando.trim();
tamanio = comando.length();
tamanio2 = StringUtils.leftPad(Integer.toString(tamanio), 9, '0');

comando = StringUtils.rightPad(comando, Constantes.TAMANIO_RESPUESTA_DES_C1, ' ');
cadena = arrDatos[0] + comando + tamanio2;
}
else
{
comando = new String();
comando = "";
tamanio = comando.length();
tamanio2 = StringUtils.leftPad(Integer.toString(tamanio), 9, '0');

cadena = arrDatos[0] + comando + tamanio2;
}

arrDatos_SR = new String[2];
arrDatos_SR[0] = cadena;
arrDatos_SR[1] = arrDatos[0];

}
catch(Exception e)
{
logger.error("MQSendReceive() - Excepcion:" + e);
}
finally
{
try {
consumer.close();
session.close();
conn.close();
context.close();
} catch (JMSException e) {
// TODO Auto-generated catch block
logger.error("MQSendReceive() - Error desconectando de MQ - Excepcion:" + e);
} catch (NamingException e) {
// TODO Auto-generated catch block
logger.error("MQSendReceive() - Error desconectando de MQ - Excepcion:" + e);
}

}

return arrDatos_SR;
< /code>
Сообщение отправляется в очередь A MQ № 1, которая затем передается в другую очередь MQ № 2, которая является очередью транмиссии в другую очередь MQ № 3. Я проверил с помощью GUI WebSphere MQ Administration Gui, размещающего сообщения в эту очередь, и они передаются плавно. Но когда я использую свой код по какой -то причине, отправка не сделана внедряется. Вместо этого это делается после окончания получения (когда истекает тайм -аут или когда он на самом деле получает сообщение)
может кто -нибудь сказать мне, почему это происходит? @TransactionManagement (TransactionManagementType.container) Анннотации. Прочитав этот пост из SO, я понял, что у меня есть 3 класса, которые делают все соединение, и один основной, который использует все из них в качестве объектов, из которых я использую общественные методы. Я решил превратить эти классы в EJB, а также с той же аннотацией. Я также пытался изменить тип @TransActionAttribute каждого метода на необходимый, не поддерживаемый и обязательный по одному, просто чтобы проверить, работали ли некоторые из них. Я также изменил строку сеанса на это: < /p>
session = conn.createSession(true, Session.SESSION_TRANSACTED);
< /code>
Результат кажется таким же. Сообщение по -прежнему застряло в очереди передачи, в то время как сообщение принимается во время интервала тайм -аута MessageConsumer.>

Подробнее здесь: https://stackoverflow.com/questions/227 ... mmit-fully
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»