Skip to content

ProducerMethod

Brian Lehnen edited this page Apr 8, 2026 · 1 revision

Producing Method Expressions

There are options for sending lambda expressions for execution.

Send a compiled lambda expression
queue.Send((message, workerNotification) => Console.WriteLine(message.MessageId.Id.Value));
Creating the queue

Creating the queue is pretty straightforward. You'll need to specify the transport you want to use. Unlike the typed-message producer, you do not need to specify the type when creating the queue. Any method producer queue can send any lambda expression.

var queueConnection = new QueueConnection(queueName, connectionString);
using (var queueContainer = new QueueContainer<InitModule>())
{
	using (var queue = queueContainer.CreateMethodProducer(queueConnection))
    {
		...
	}
}

If you dispose of the container, all queues created from the container will be disposed as well. If you will be sending many expressions over time, you should hang on to the container/queues instead of constantly creating them.

The send commands are thread safe.

Method expressions can be sent in a few different ways.

A single expression with no additional message metadata
var result = queue.Send((message, workerNotification) => Console.WriteLine("Hello World"));
A single expression with additional metadata, such as a delay
var data = new AdditionalMessageData();
data.SetDelay(TimeSpan.FromMinutes(1));
var result = queue.Send((message, workerNotification) => Console.WriteLine("Hello World"), data);
A collection of expressions with or without additional metadata. Note that this operation is not necessarily atomic
var result = queue.Send(messageList);
All of the above commands have async methods as well
var result = await queue.SendAsync((message, workerNotification) => Console.WriteLine("Hello World"));

All methods return the result of the operation. This includes the following:

  • A boolean indicating if an error occurred
  • An exception containing the error, if an error occurred.
  • Information about the sent message, assuming no errors -The message ID -The correlation ID

Methods that take in a collection of messages return a collection of results. The collection contains a boolean named 'HasErrors' that will indicate if any result failed.

For a complete working example, see SQLServerProducerLinq in the samples repository.

Clone this wiki locally