News

Enterprise messaging with codeBeamer
Aug 31, 2009

codeBeamer has a long history of providing extension- and customization points, most importantly a web service based Remote API and a Listener API. Reactions from the developer community have always been very positive, but a question we regular hear from them is: "Look, I want to listen to codeBeamer events. I know this is perfectly possible in the same JVM where CB runs, but now I need to do this in an external application. How can I receive notifications in external applications?"

Well, until now, this was not possible: events were not published outside CB’s own JVM.

To satisfy this popular request, recently we developed a Java Message Service (JMS) publisher component. After you have configured and activated the JMS publisher, CodeBeamer will send a standard JMS message to a configurable topic each time an internal event is fired. External applications can subscribe to these topics, and then they will get notified about every interesting event. Please note that this pub-sub model and messaging in general are standard and proven techniques in Enterprise Application Integration. Just Google it for more information.

Internal events that are published as JSM messages include:

  • wiki pages: created, updated or read
  • issues: submitted, edited or commented
  • documents: uploaded, edited or opened
  • forum posts: submitted or edited
…and so on. You can learn more about the supported events in the developer documentation.

Comparison between the Listener API and the new messaging based approach:

MessagingUsing the Listener API
CouplingLouse.Tight.
JVMCB and the listener can run in separete JVMs.CB and the listener must run in the same JVM.
Development EaseMake sure your Message Provider is up and running. Configure CB to be able to publish to it. Configure your app to subscribe it. Afterwards, you don’t have to touch CB anymore, you can focus on your app.Implement the interfaces, deploy the implementation classes to the classpath, and restart CB or configure auto-reload to pick up your changes every time.
DeploymentAny time. This is completely transparent for CB.CB (and its JVM) must be restarted. Alternatively, classes can be auto-reloaded, but this is discouraged for production systems.
Stability & ScalabilityExternal apps run in their own JVM. They can perform expensive operations, consume any resources, or crash, and CB is not affected.Expensive operations or a large number of listeners can slow CB down. Internal listeners are inherently synchronous.

We believe this can open up a myriad of great opportunities for integration. You can start developing desktop apps, realtime apps, and start to solve any kind of event driven integration problems now.

About intland

Provider of Agile ALM solutions. Father of JavaForge. Maintainer of MercurialEclipse. Into all things agile & DVCS. View all posts by intland

Leave a Reply

Your email address will not be published. Required fields are marked *

*


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>