Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passing messages between remote MailboxProcessors?

I'm using MailboxProcessor classes in order to keep separate agents that do their own thing. Normally agents can communicate with one another in the same process, but I want agents to talk to one another when they are on separate processes or even different machines. What kind of mechanism is best for implementing communication between them? Is there some standard solution?

Please note that I'm using Ubuntu instances to run the agents.

like image 608
Dmitri Nesteruk Avatar asked Jan 31 '11 14:01

Dmitri Nesteruk


People also ask

When a mailbox server receives a message what passes the message to the mailbox transport service?

Exchange 2013: After the message arrives at the destination Mailbox server in the destination Active Directory site, the Transport service uses SMTP to transfer the message to the Mailbox Transport service. The Mailbox Transport service then delivers the message to the local mailbox database using RPC.

Which Exchange role helps to route emails from server to another?

A connector: A Send connector is used as a routing destination for SMTP messages based on the configuration of the Send connector (address spaces, scoped or not, etc.). Similarly, a Delivery Agent connector or Foreign connector is used as a routing destination for non-SMTP messages.

What is mailbox throttling?

Receiving mailboxes (ISPs) often have a limit on how much mail they can receive during a specific timeframe. If you're sending them too much mail, or sending it too fast, they can choose to defer mail in a process known as throttling.

What does a categorizer do while mail routing?

The Exchange component responsible for recipient resolution is the Categorizer. The Categorizer must be able to associate every recipient in every message with a corresponding recipient object in Active Directory. All senders and recipients must have a primary SMTP address.


1 Answers

I think you're going to have write your own routines to serialize messages, pass them accross the process boundaries and then dispatch them on the other side. This will also require a implementation of a ID system where each mailbox has an ID and processes can send messages to IDs instead of just Mailbox.Send. This is not easy, as local boxes will be able to access local memory, but remote mailboxes will not.

I would look at something like RPyC (http://rpyc.wikidot.com/) as it provides a protocol somewhat like you are looking for.

Basically the answer is 'no' there isn't really a good way to do this.

like image 74
Timothy Baldridge Avatar answered Sep 28 '22 23:09

Timothy Baldridge