Thursday, November 29, 2012

Getting started with NServiceBus, Request-Response example

In this blog post we explain some request-response example that we mentioned in the previous blogpost.

Below you can see the first steps to do, before we really can start with sending some messages.

  - Go to à Downloads
  - Download the msi file under the “Get version 3.3.1 now” button.

   - Install the msi file on your system.
   -  Now you can find under “All programs > NServicebus v3.3.1” a Welcome to NServiceBus link.

You can click on the samples link to go to the samples. Or you can choose a sample below. We will talk about the “FullDuplex – RequestResponse” sample. Copy past the location of the sample and open it with visual studio. You will get the following solution.

The client is going to send a message to the server, the server will process the message and return it back to the client.
Let’s run the server and client application. You should see some screens like below.

Now we can exchange some messages between server and client. Let’s hit the “Enter” button in the Client Console. The client sends a message to the server with a Guid, which is received by the server and the server sends a message back to the client.

As you can see, this is not a real life scenario. What if the client is down? What if the server is down.
Let’s now start only the client application.

As you can see we send a message from the client to the server, but we don’t get some reaction back from the server because we didn’t start the server application. You don’t lose the message because NServicebus uses MSMQ and the message stays in the queue.
When we look in the MSMQ queue, you can see that there is a message.

Now we open the message, there you can find the DataID in the message. This ID is the same as on the Client application.

Now we can start the server application.

You can now see that the server picks up the message to process it. And send it back to the client.
I hope you enjoyed reading this blogpost.

Author: Sven Van den brande

Friday, November 23, 2012

What is NServiceBus

NServicebus is designed for collaboration between different services. It’s not just a replacement for WCF, BizTalk, ….. You can easily combine NServiceBus with BizTalk.

For BizTalk, the communication goes through one central box. We can call BizTalk a Broker style. All the information goes through BizTalk itself.

NServiceBus is something different. It’s more a peer-to-peer architecture that works on the message queues from Microsoft ( MSMQ ). So NServiceBus will do all the communication between systems with MSMQ. When you handle your message you still need to do the further communication.

When one of the “servers” go down because some hardware failure,... the communication between the other systems continues. This is some key feature for NServiceBus because you can keep sending messages. When the systems comes back online after the repair. It will get all the messages from the other systems, because they hold their  messages in the queues .


Now you know the basic difference between some other Integration tools. Like always a demo/example says more than thousands words.  So in the next blog post we will setup, the NServiceBus Environment and let you see some simple example about Request / Response.

Do you want to read more about NServiceBus, stay tuned!
Author: Sven Van den brande

Sunday, November 18, 2012

Getting a glimpse of the Webmethods Integration Server OSGi-container.

After having followed an excellent presentation @Devoxx (Modular Architecture Today by Kirk Knoernschild), I decided to dive a bit into the OSGi container of SoftwareAG's Integration Server.

As documentation on this is scarce, the following information is not official and just bits and pieces I picked up, or investigated myself. The OSGi container was introduced in version 8.2.2, to cope with new components such as the Event server.
What SAG decided to do with the OSGi runtime, was to run the IS as one bundle and other components (such as the event server or common components) as other bundles. As runtime they choose the equinox implementation from Eclipse. This implementation comes with an easy to use console which can show us all the (active/loaded) bundles. This will be the goal of this article to get the console running and show us the bundles SAG is loading.

We're in luck: all we need to do is add "-console [port]" to the start-up of the OSGi-container. If you think you can find it in server.bat, you're half way there...this file now points to the OSGi-container, which you can find under [your_install_dir]\profiles\IS. We are interested in the start-up, so we will open "bin\runtime.bat". There you will find:

%JAVA_RUN% -Xbootclasspath/a:"%OSGI_CLASSPATH%" %JAVA_OPTS% %JAVA_SYSPROPS% -cp "%OSGI_FRAMEWORK_JAR%" org.eclipse.equinox.launcher.Main -configuration %OSGI_CONFIGURATION_AREA% %CMD_ARGS%

Just change it to:

%JAVA_RUN% -Xbootclasspath/a:"%OSGI_CLASSPATH%" %JAVA_OPTS% %JAVA_SYSPROPS% -cp "%OSGI_FRAMEWORK_JAR%" org.eclipse.equinox.launcher.Main -configuration %OSGI_CONFIGURATION_AREA% %CMD_ARGS% -console [port]

with [port], the port which you want to use to access the console.

Now just launch the server.bat. In your prompt, you should see something like: "Listening on port [port] ...". So lets now connect to the console, just open a telnet session to the port and your there:

telnet localhost [port]

Next type "ss" and you should get a list of all the bundles that are loaded:
Some useful commands are listed below:

Starts a bundle given an ID or symbolic name
Stops a bundle given an ID or symbolic name
Adds a bundle given a URL for the current instance
Removes a bundle given a URL for the current instance
Updates a bundle given a URL for the current instance
Lists all active bundles in the current instance
List the headers for a bundle given an ID or symbolic name
Lists a short status of all the bundles registered in the current instance
services <filter>
Lists services given the proper filter
Runs diagnostics on a bundle given an ID or symbolic name

Hopefully this could prove helpful, especially when SAG extends its use of OSGi.

Author: Stefan

Saturday, November 10, 2012

SAP NetWeaver Cloud Integration

During the TechEd conference, SAP has released more information about their new Netweaver Cloud Integration offering, that is the "Integration-As-As-Service" offering from SAP.

From this presentation we learn that Netweaver Cloud Integration is not "SAP PI in the cloud", but comes very close to it.  Netweaver Cloud Integration is fully compatible and integrated with the on-premise version of SAP PI. Same development, configuration and monitoring approach.

Also interesting is the blog entry of Prasanna Burri where he talks about using Netweaver Cloud Integration with SuccessFactors.  In his answers to questions, Prasanna mentions an availability date of Feb. 2013.

Author: Guy

Friday, November 2, 2012

IBM DataPower as ESX appliance

i8c does quite some work with IBM WebSphere DataPower.  And counts a number of experienced and certified DataPower developers and architects.  DataPower is great at securing and mediating web services.

Colleague Kim came up with a very interesting evolution: DataPower as a virtual appliance, so the XG45 gateway and XI52 integration appliance as ESX images.

This is similar to the CastIron offering of IBM that comes with on-premise hardware and virtual appliances.  Right now we have a CastIron instance running on our ESX server (i8c employees can deploy their images either on an ESX server or a Windows server running HyperV).

Note: together with Joris Verberckmoes (Lead Designer SOA Services @ Gdf-Suez) I'll be giving a presentation at the Belgian WebSphere User Group on Nov 27; topic is the use of DataPower @ Gdf-Suez

Author: Guy