Я пытаюсь опубликовать текстовое сообщение на тему с помощью apache camel с activemq. Следующий код работает нормально, и моя клиентская программа способна конвертировать сообщение в текстовое сообщение.apache camel multicast преобразование текстового сообщения в байтовое сообщение
<route id="setText">
<from uri="restlet:///test/{testId}?restletMethod=POST" />
<setExchangePattern pattern="InOnly" />
<setBody>
<simple>${header.testId}:${body}</simple>
</setBody>
<to uri="activemq:topic:TestTopic" />
</route>
Теперь я добавил многоадресную рассылку для выполнения нескольких операций. многоадресная рассылка способна хорошо работать и успешно отправлять сообщение в тему.
<route id="setText">
<from uri="restlet:///test/{testId}?restletMethod=POST" />
<setExchangePattern pattern="InOnly" />
<multicast>
<pipeline>
<!-- some operation -->
</pipeline>
<setBody>
<simple>${header.testId}:${body}</simple>
</setBody>
<to uri="activemq:topic:TestTopic" />
</multicast>
</route>
Но при отправке текстового сообщения в тему многоадресная рассылка преобразует сообщение в поток байтов. Моя программа-клиент не может преобразовать потребленную сообщение для Отпрака bcoz сообщение в формате до свидания и ниже информация отображается System.out.println (в моей программе клиента)
ActiveMQBytesMessage {commandId = 5, responseRequired = true, messageId = ID:R-014-49827-1433324560754-3:1:1:1:1, originalDestination = null, originalTransactionId = null, producerId = ID:R-014-49827-1433324560754-3:1:1:1, destination = topic://TestTopic, transactionId = null, expiration = 0, timestamp = 1433324582980, arrival = 0, brokerInTime = 1433324582981, brokerOutTime = 1433324583731, correlationId = null, replyTo = null, persistent = true, type = null, priority = 4, groupID = null, groupSequence = 0, targetConsumerId = null, compressed = false, userID = null, content = [email protected], marshalledProperties = [email protected], dataStructure = null, redeliveryCounter = 0, size = 0, properties = {breadcrumbId=ID-R-014-49826-1433324557692-2-1, org_DOT_restlet_DOT_http_DOT_version=1.1, testId=3100026, org_DOT_restlet_DOT_startTime=1433324582521, CamelHttpMethod=PUT, CamelHttpUri=http://localhost:8080/service-bus/test/3100026}, readOnlyProperties = true, readOnlyBody = true, droppable = false} ActiveMQBytesMessage{ bytesOut = null, dataOut = null, dataIn = null }
Можете ли вы предложить почему многоадресная преобразование текстового сообщения в формат байта? А что делать, отправлять сообщение в текстовом формате? Заранее спасибо.
Многоадресная рассылка, конечно, * не * конвертирование anthying. Вы ищете не то место. – EJP
Да. Я понимаю. он просто передает входную информацию во все подсистемы. Но когда я тестировал вне многоадресной рассылки, моя клиентская программа может использовать это сообщение как TextMessage. Но это не происходит в случае многоадресной рассылки. –