/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
namespace Apache.NMS
{
///
/// An object capable of sending messages to some destination
///
public interface IMessageProducer : System.IDisposable
{
///
/// Sends the message to the default destination for this producer
///
void Send(IMessage message);
///
/// Sends the message to the default destination with the explicit QoS configuration
///
void Send(IMessage message, MsgDeliveryMode deliveryMode, MsgPriority priority, TimeSpan timeToLive);
///
/// Sends the message to the given destination
///
void Send(IDestination destination, IMessage message);
///
/// Sends the message to the given destination with the explicit QoS configuration
///
void Send(IDestination destination, IMessage message, MsgDeliveryMode deliveryMode, MsgPriority priority, TimeSpan timeToLive);
///
/// Close the producer.
///
void Close();
MsgDeliveryMode DeliveryMode { get; set; }
TimeSpan TimeToLive { get; set; }
TimeSpan RequestTimeout { get; set; }
MsgPriority Priority { get; set; }
bool DisableMessageID { get; set; }
bool DisableMessageTimestamp { get; set; }
#region Factory methods to create messages
///
/// Creates a new message with an empty body
///
IMessage CreateMessage();
///
/// Creates a new text message with an empty body
///
ITextMessage CreateTextMessage();
///
/// Creates a new text message with the given body
///
ITextMessage CreateTextMessage(string text);
///
/// Creates a new Map message which contains primitive key and value pairs
///
IMapMessage CreateMapMessage();
///
/// Creates a new Object message containing the given .NET object as the body
///
IObjectMessage CreateObjectMessage(object body);
///
/// Creates a new binary message
///
IBytesMessage CreateBytesMessage();
///
/// Creates a new binary message with the given body
///
IBytesMessage CreateBytesMessage(byte[] body);
///
/// Creates a new stream message
///
IStreamMessage CreateStreamMessage();
#endregion
}
}