Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
51 lines (30 sloc) 1.74 KB


This project implements a bridge between Microsoft MQ and RabbitMQ.

The bridge is implemented using FSharp and the RabbitMQ Client for .Net. It has been tested with version 2.4.0


If you have a MSMQ public queue called @".\private$\MyTestingQueues" then you can subscribe to it, receive messages from it and then send them to RabbitMQ to a queue that you decide.


In your project you will have to add a reference to the System.Messaging dll and to the RabbitMQ client dll. Then you can have a program like this:

module Program

open System.Messaging
open RabbitMQ.Client

open MSMQ.Util
open RabbitMQ.Helper
open RabbitMQ.Bridge

Bridge.msmq2rmq ("guest", "guest", "/", "localhost", 
				("", "ms-test", null)

Here we pass three arguments to Bridge.msmq2rmq:

  • A tuple with (user, password, vhost, host, port, protocol) to use while connecting to RabbitMQ.
  • A tuple with (exchange, routing_key, basicProperties) used while publishing the message.
  • The name of the MSMQ Queue.

In this case we are sending the messages to the unnamed exchange using the queue name as the routing key.

If a message with body "quit" is sent to the MSMQ queue, then the Receiver will quit. The messages are expected to be formatted using BinaryMessageFormatter.


Consider this project as alpha. Just an excercise to learn Fsharp and MSMQ. You could use this as a reference for your implementations or simply contribute to this project to make it more robust.


  • Allow importing messages from RabbitMQ to MSMQ