Author |
Message
|
kirank |
Posted: Fri Jan 02, 2009 10:25 am Post subject: Integration with Registry |
|
|
 Centurion
Joined: 10 Oct 2002 Posts: 136 Location: California
|
I have a design question related to integration with registry using WMB. I am thinking of using WMB as an ESB to route service calls from a client to a service provider. If we use a registry such as WSRR to publish WSDL for the service, WMB 6.1 can call registry and get the end point for the service from registry. However since the client needs to call service endpoint which is really a WMB endpoint, it can not use registry.
Has anyone used this type of pattern with WMB? Do you then use two separate WSDL's one for client and one for WMB?
Regards
Kiran |
|
Back to top |
|
 |
mqjeff |
Posted: Fri Jan 02, 2009 11:41 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
There are various patterns that apply here, and change what you might do.
At a basic level, consider that both the WMB WSDL and the actual service provider WSDL are still endpoints, and can both be published in WSRR and looked up from there. So the client can look up both the service provider and the WMB endpoints from WSRR.
Depending on whether you wish to still provide a path to the service provider, you may or may not choose to publish that WSDL in WSRR in the first place and only publish the Broker endpoint WSDL.
The other thing is, if the WSDL is the same for both the Broker and the provider, then the only thing that is going to be different is the network address. And there may be other ways you can change that, without publishing two endpoints in WSRR.
Again, there are various design patterns at work here. Is Broker being a service facade? A service proxy? Are you providing a generic ESB entry point for all services, with smart content-based routing and validation behind? or individual entry points for each service? |
|
Back to top |
|
 |
kirank |
Posted: Fri Jan 02, 2009 11:50 am Post subject: |
|
|
 Centurion
Joined: 10 Oct 2002 Posts: 136 Location: California
|
I am planning to provide individual entry points for each service. If we publish two separate WSDL's each with a different endpoint into registry, its going to be confusing for registry users. Since the two WSDL's are practically same with the exception of endpoint. Has one used a taxonomy in registry to classify the services that are accessed via ESB. This way you can publish both WSDL and use taxonomy to differentiate.
However it is kind of confusing for an application user who might be browsing the registry when he find more than one entry for a service.
Regards
Kiran |
|
Back to top |
|
 |
mqjeff |
Posted: Fri Jan 02, 2009 12:57 pm Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
Again, is it going to be legal for consumer applications to call the service provider directly, rather than by way of the WMB end point? That is, is the WMB endpoint a service proxy?
If it is not allowed for consumer applications to call the service providers directly, then don't publish the endpoint.
If it is allowed, then you will need to publish both endpoints! Because you can't determine for the consumer app which one they need to use. And if it's confusing, then maybe they should not be allowed to call the provider directly!
It's a question of governance and design patterns.
It's also relatively easy to have a consumer application override the network address part of the wsdl before they call it, based on a local configuration. Or you can redirect that through various other means - network layer configurations for example. |
|
Back to top |
|
 |
kirank |
Posted: Fri Jan 02, 2009 1:43 pm Post subject: |
|
|
 Centurion
Joined: 10 Oct 2002 Posts: 136 Location: California
|
I can only publish say the WSDL with endpoint for WMB. But then the endpoint of the actual service is hard coded in WMB and it can not be dynamically read from regisrty. The registry provides location transperancy and that is the reason I would like to use regisrty for WMB call to the service as well. |
|
Back to top |
|
 |
fjb_saper |
Posted: Fri Jan 02, 2009 2:43 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
kirank wrote: |
I can only publish say the WSDL with endpoint for WMB. But then the endpoint of the actual service is hard coded in WMB and it can not be dynamically read from regisrty. The registry provides location transperancy and that is the reason I would like to use regisrty for WMB call to the service as well. |
You will need a WSDL in a different namespace for the Service Provider and restrict its access to the broker. (The content like message type etc... can share the namespace if there is no mapping, but the wsdl itself should have a different namespace because of the different endpoints). Then publish it.
This way the only publicly accessible WDSL is the one of the broker.
That the broker has access to a private WSDL giving the actual location of the service should not be a concern if access has been duly restricted.
We have the service provider pick up it's inbound messages from specific queues in the MQ system. This way a service provider change that does not need any new mapping does not affect the flow...
Enjoy  _________________ MQ & Broker admin |
|
Back to top |
|
 |
|