Hi Geeks
I am moving this thread to the DEV mailing list because it not about
using ServiceMix anymore. The problem is that when using the
asynchronous message exchange that the response is not sent back to
the calling SU but to the Provider Endpoint of the called SU.
I just keep on spinning here. I have a closer look at the
MessageExchangeImpl and saw that the Mirror references the same
packet and beside the ROLE and STATUS everything else is set or
retrieved from the packet. This means that always the MIRROR is
pointing to the same service, endpoint etc.
Creating a new ME it will be of role CONSUMER and the mirror is of
role PROVIDER. The Delivery Channel (DC) will send the ME using the
mirror and so the DC will send it to the target service PROVIDER
endpoint. When the response is sent back the DC will use the MIRROR
(of the MIRROR), which has not the role CONSUMER, but because of the
same packet it will use the same Service / Endpoint / Interface Name
meaning the message is sent back to the same service with the only
exception that the ME is send to the CONSUMER endpoint instead.
But shouldn't it be that the ME references the CONSUMER endpoint of
the caller (the service that created and sent the message originally)
and the MIRROR references the PROVIDER endpoint of the called service
(the service that received the original message) which most likely
are not the same SU.
This would mean that the addressing parts (service name, endpoint,
interface name) must be removed from the packet and kept separate
from the ME and its MIRROR. We might also need to swap the ME and
MIRROR so that the ME is pointing to the PROVIDER and the MIRROR
pointing to the CONSUMER. This means that the DC will use the ME
instead of the MIRROR to send the ME and NMR or the receiving DC must
swap the ME / MIRROR so that the Provider Endpoint receives the
MIRROR which is subsequently pointing back to the calling service.
Let me know what you think?
Thanks - Andy
On Oct 17, 2007, at 9:11 AM, Andreas Schaefer (2) wrote:
Hi Guillaume
I tried something new using the SCRIPT as the provider service
rather than another BEAN. Now I think I see a little bit more what
is going wrong. What is happening is that the response is handled
by the BeanComponent (which is good) but because it is using the
MIRROR member to which it sends the response to it fails because of
an unknown request (it should work because I fix that issue locally).
From my understanding I think the message is properly sent back to
the correct BC/SE, in this case the Bean Component, but because it
uses the MIRROR as the address it sends it to the wrong SU, which
in this case is the SCRIPT SU which is not even a BEAN. It seems to
me that the MIRROR is pointing to the consumer endpoint of the
provider SU rather than the consumer SU. That is my log output:
[Notes Andy]: Here I send the InOut Message to he Provider:
2007-10-17 08:51:53,515 [58-0:0-thread-1] INFO
ScriptInOutControllerBean - onMessageExchange() send new ME:
InOut[
id: ID:10.250.1.197-115aea91258-2:0
status: Active
role: consumer
service: {urn:scout}script-receiver-service
operation: IdontCare: 0
in: ?xml version=1.0 encoding=UTF-8?
receivertitleDontCareEvenMore/titleindex0/index/receiver
]
2007-10-17 08:51:53,515 [58-0:0-thread-1] DEBUG
BeanComponent - Created correlation id: ID:
10.250.1.197-115aea91258-2:0
2007-10-17 08:51:53,515 [58-0:0-thread-1] DEBUG
DeliveryChannelImpl- Send ID:
10.250.1.197-115aea91258-2:0 in DeliveryChannel{ID:
10.250.1.197-115aea91258-0:0}
[Notes Andy]: AS-LOG are log statements I added to Smx
2007-10-17 08:51:53,515 [58-0:0-thread-1] INFO
DeliveryChannelImpl- AS-LOG, doSend(), ME: InOut[
id: ID:10.250.1.197-115aea91258-2:0
status: Active
role: consumer
service: {urn:scout}script-receiver-service
operation: IdontCare: 0
in: ?xml version=1.0 encoding=UTF-8?
receivertitleDontCareEvenMore/titleindex0/index/receiver
]
2007-10-17 08:51:53,516 [58-0:0-thread-1] INFO
DeliveryChannelImpl- AS-LOG, doSend(), send exchange to
MIRROR: InOut[
id: ID:10.250.1.197-115aea91258-2:0
status: Active
role: provider
service: {urn:scout}script-receiver-service
operation: IdontCare: 0
in: ?xml version=1.0 encoding=UTF-8?
receivertitleDontCareEvenMore/titleindex0/index/receiver
]
2007-10-17 08:51:53,516 [58-0:0-thread-1] DEBUG
SedaFlow - Called Flow send
2007-10-17 08:51:53,518 [58-0:1-thread-1] DEBUG
SedaQueue -
[EMAIL PROTECTED] dequeued
exchange: InOut[
id: ID:10.250.1.197-115aea91258-2:0
status: Active
role: provider
service: {urn:scout}script-receiver-service
endpoint: in-out-receiver
operation: IdontCare: 0
in: ?xml version=1.0 encoding=UTF-8?
receivertitleDontCareEvenMore/titleindex0/index/receiver
]
2007-10-17 08:51:53,518