0

The setup at the current employer has one set of back office functions on a Java platform and another group of functions on two separate .NET-based platforms. There is no overall architect.

The Java guys decided to go for Apache QPID and AMQP for messaging, presumably amongst themselves, with the .NET systems and other external systems.

.NET architecture involves WCF services hosted in IIS/WAS and Windows Server AppFabric.

Does anyone have any experience of AmqpBinding and IIS/WAS, if there are any possible pitfalls?

Sentinel
  • 3,582
  • 1
  • 30
  • 44

1 Answers1

4

I think your first problem will be IIS/WAS/AppFabric because non HTTP services hosted in WAS have additional requirements for infrastructure which consists of additional process (listener) running usually as as a windows service and communicating with worker process. This process is responsible for receiving and sending messages and allows service activation in WAS. I don't think that the QPID project has the listener process already created. You will most probably have to implement the listener yourselves - check this sample for custom UDP activator.

Ladislav Mrnka
  • 360,892
  • 59
  • 660
  • 670
  • Thanks for that. I also discovered that QPID doesn't have the listener activator available, some time after I posted the question. Makes me wonder what MS have been doing on the AMQP board all this time? A main benefit of WAS activation is that from the .NET perspective the input message can be 'pushed' to WCF. We would be able to just expose ServiceContracts and let the binding do its job. Without this..well now they are suggesting scary options including for example SOAP for incoming and AMQP for outgoing :( Skills re transaction scoping, message correlation etc aren't here :( – Sentinel Apr 17 '12 at 20:24
  • I should also add that 90% of systems are .NET here with a smaller but key component on Java. The direction, regardless, is JBOSS based ESB. – Sentinel Apr 17 '12 at 20:30
  • WAS has its own limitation and it goes directly from IIS architecture where HTTP is also handled outside by http.sys kernel driver. You can either try to build listener or host WCF service in windows service. Alternatively you can use AMQP directly but again without IIS/WAS. It is not only problem of you protocol but of every messaging infrastructure used in enterprise world. Java based ESB is a good choice because MS doesn't offer any cheap alternative (they have only BizTalk) and when it comes to open source Java solutions are usually much more mature than .NET solutions – Ladislav Mrnka Apr 17 '12 at 21:38
  • BizTalk and Azure AppFabric ServiceBus, to be correct. Not to mention all the freeware components and inhouse .NET development staff that make Java ESB in a .NET shop a bit suspect. We don't have many interfaces and I would hardly call this place an Enterprise. Nevertheless, that's beside the point. I'll take a quick look at Spring.NET. I wonder if there's some cheap glue there. – Sentinel Apr 17 '12 at 21:53
  • Spring.NET wraps just existing messaging libraries - Apache NMS (to connect to JMS implementations - especially ActiveMQ), Tibco EMS and MSMQ. There was also plan to add IBM XMS to connect to IBM JMS implementation and IBM WebSphere MQ but I think it is not implemented yet. – Ladislav Mrnka Apr 17 '12 at 22:07
  • There is something there about AMQP, and some AMQP-MSMQ stuff. But... OK time to start writing my own AMQP listener activator. Ladislav, can you knock one up by tomorrow morning? Failing that, can someone from MS confirm they'd buy the rights to the source off me for a small fortune? – Sentinel Apr 17 '12 at 22:19