Два отдельных процесса взаимодействуют через JMS через MQ.
Автор устанавливает строковое свойство:
new MessageAction() {
public void actOn(Message message) throws JMSException {
logger.debug("Setting message property (GmmThreadId, CASHFLOW-1234)");
message.setStringProperty("GmmThreadId", "CASHFLOW-1234");
}
});
Это MessageAction
выполняется, как показано в журналах:
Setting message property (GmmThreadId, CASHFLOW-1234)
Читатель использует селектор сообщений для получения этого сообщения. (используя Spring JmsTemplate v1 - старая версия, которую я знаю, но она встроена в структуру нашего поставщика, и мы вынуждены ее использовать. )
template.receiveSelected(queue, "GmmThreadId = 'CASHFLOW-1234' or GmmThreadId IS NULL");
Единственные сообщения в очереди - это сообщения, для которых в журналах указано, что автор установил свойство сообщения. В журналах для читателя я перечисляю свойства, а также пытаюсь записать значение GmmThreadId. Это также показывает, что свойство GmmThreadId не существует.
message property JMS_IBM_PutDate = 20111003
message property JMSXAppID = WebSphere MQ Client for Java
message property JMS_IBM_Format = MQSTR
message property JMS_IBM_PutApplType = 28
message property JMS_IBM_MsgType = 8
message property JMSXUserID = MUSR_MQADMIN
message property JMS_IBM_PutTime = 23551798
message property JMSXDeliveryCount = 2
message had GmmThreadId property of null
Заметьте, если мой селектор сообщений только "GmmThreadId = 'CASHFLOW-1234'"
, то ничего не снимается.
Используя WebSphere MQ Explorer для просмотра сообщения, я не могу найти нигде, чтобы просмотреть свойства сообщения набора приложений. Тип сообщения MQSTR, если это имеет какое-либо значение.
В WebSphere v6 работают приложения для чтения и записи.
Куда я иду не так?