-
1. Re: Message Flow
burrsutter Jan 20, 2007 11:10 AM (in response to jpount)The quickstart helloworld_action takes an inbound JMS message, pass it through a chain of actions then uses a notifier to send it back out to another JMS queue.
I believe that is what you are looking for.
Burr -
2. Re: Message Flow
burrsutter Jan 20, 2007 11:13 AM (in response to jpount)On the issue of calling an external WS...
In 4.0 CR2/GA you will need to use a standard WS tool to generate the client-side stubs you need to perform Java to WS invocations. JBoss AS ships with JBossWS which has a tool called wstools.bat. You'll find it in the "bin" directory for the 4.0.4+ app server and the documentation is in the JBossWS area of this website.
There is no configuration technique (e.g. any XML to put into jbossesb.xml) to expose/produce or consume a WS in this release of the product. However, standard 'ol Java will do the trick and you can embedded that into an Action.
I'll add this as a quickstart (produce & consume) so that it is more obvious. Or perhaps you would be willing to contribute that quickstart! ;-)
Burr -
3. Re: Message Flow
jpount Jan 21, 2007 5:48 PM (in response to jpount)Burr,
Thanks for the replies to this and the other related topic.
I have looked at the trailblazer and other samples and they are fairly simple and obviously evolving. I guessed as much about the WS but was just checking that there was nothing I could do in the XML configs before I started writing my own client code.
So just to recap ...
External WS - Need to write/generate my own client code and embed it in an action.
External JMS - Similar to the helloworld, I can send a message out to an external system and receive it back as per normal JMS. I need to set replyTo etc to implement message correlation.
Sync Request/Reply service. I should use Two-Way courier and JMS correlation.
Thanks again for your help.
John -
4. Re: Message Flow
estebanschifman Jan 21, 2007 6:02 PM (in response to jpount)Hi John,
The route(Message) method in CbrProxyAction can illustrate a synch request/reply using JMS
Good luck.
Esteban -
5. Re: Message Flow
burrsutter Jan 23, 2007 9:04 PM (in response to jpount)John,
- WS consume or produce: roll your own code for now - nothing declarative
- JMS outbound from the bus to the outside world might be able to use the notification feature. Check out the jbossesb.xml in the helloworld_action quickstart. I've not checked the correlationid so you may just have to make your own JMS call.
- For Sync request/reply, Esteban suggest looking in CbrProxyAction.java but you'll need to download the source distro or check out from SVN.
Here is the section that seems to be interesting:TwoWayCourier courier = CourierFactory .getCourier(epr, null); EPR replyEpr = getReplyToEpr(epr); if (message.getHeader().getCall() == null) { Call call = new Call(); message.getHeader().setCall(call); } message.getHeader().getCall().setReplyTo(replyEpr); // If not successful try the next EPR if (courier.deliver(message)) { courier.setReplyToEpr(replyEpr); try { // wait for the reply. replyMessage = courier .pickup(_replyListenerTimeout); } catch (CourierTimeoutException e) { throw new MessageRouterException(e .getLocalizedMessage(), e); } // if we get here we were successful so we can break // from the loop and reply. break; }
This is obviously not good enough from a documentation standpoint. Sync request/reply is something that we are working to flesh out.
Please let us know if you have any troubles in this area and we'll work through it.
Burr -
6. Re: Message Flow
daniel.brum Jan 23, 2007 9:56 PM (in response to jpount)John, the Trailblazer also makes use of the same code shown above for a 2Way (sync) communication. You can grab it from svn right now to see the example, or wait till the GA shortly to see it in action for an idea of how you could do it.
As Burr pointed out, WS consumer/producer is not yet available. In the trailblazer, I used a simple JSR 181 annotated pojo web service consumer to receive requests and then invoke the courier/gateways an action processing capabilities of the ESB. I am writing up some docs for the TB now which will help explain the scenario and the code/config files behind it a little more.
thanks -
7. Re: Message Flow
anescu Apr 18, 2007 4:32 AM (in response to jpount)Hi,
I have the same issue here.
We need to pass messages into ESB via various providers (SMTP, WS, FTP, etc), make some transformations on them and after that send them to various clients (the same protocols that are "listened" will probably need to be implemented as out ports).
So far what ESB can do is to link several actions one after another. So the "outbound connector" is the last action in a chain. Do you plan to implement some sort of "outbound connector"?
I mean for example to have something like:[FTP listener] -> [action1] -> [action2] -> [action3] -> [SMTP outbound connector]
With everything being specified in the jboss-esb.xml.
For example now to simulate the last step, i could use an action and specify with<property name="[name]" value="[value]"/>
tags all the properties I need to define. But that means that I will have one action class for each protocol.
See real example here:<actions> <action name="actionFTP" class="com.babelgom.ftp.FTPListenerAction" process="process,playWithMessage" > <property name="account" value="123456" /> </action> <action name="sendToFTP" class="com.babelgom.ftp.FTPListenerAction" process="sendResponse" > <property name="transformation" value="none"/> <property name="ftp-hostname" value="ts541"/> <property name="ftp-username" value="testuser"/> <property name="ftp-password" value="testpassword"/> <property name="ftp-directory" value="/outbound"/> <property name="ftp-file-name" value="FTPOutput.dat"/> </action> </actions>
-
8. Re: Message Flow
burrsutter Apr 18, 2007 6:46 AM (in response to jpount)If you are writing your own custom action then you can build one that handles all protocols based on the presence of the properties.
Look at the quickstart called "more_action" to see how custom/nested properties currently work.
Plus JBoss ESB already has an outbound action called
org.jboss.soa.esb.actions.Notifier
that allows you to outbound a message to the console, JMS queue, FTP and SMTP. It might give you something to use "out-of-the-box" or a least extend to your own needs. -
9. Re: Message Flow
anescu Apr 19, 2007 4:06 AM (in response to jpount)Thanks,
In the meanwhile I have found the "Notifier" type, and I've been able to use it.