blob: d895a9749b6538fb6e28098641929c73014a4329 [file] [log] [blame]
/*
*
* 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.Qpid.Messaging
{
/// <summary>
/// Defines an object capable of publishing messages
/// to an AMQP broker.
/// </summary>
/// <remarks>
/// A publisher can be created using either
/// <see cref="IChannel.CreatePublisher"/> or
/// using the builder pattern (preferred) with
/// <see cref="IChannel.CreatePublisherBuilder"/>
/// </remarks>
public interface IMessagePublisher : IDisposable, ICloseable
{
/// <summary>
/// Default delivery mode to use with this publisher
/// </summary>
DeliveryMode DeliveryMode { get; set; }
/// <summary>
/// Name of exchange messages are published to
/// </summary>
string ExchangeName { get; }
/// <summary>
/// Routing key used when publishing messages
/// </summary>
string RoutingKey { get; }
/// <summary>
/// If true, a message ID will not be generated by the publisher
/// when sending the message
/// </summary>
bool DisableMessageID { get; set; }
/// <summary>
/// If true, no timestamp will be added to the message
/// when publishing it
/// </summary>
bool DisableMessageTimestamp { get; set; }
/// <summary>
/// Default priority used when publishing messages
/// </summary>
int Priority { get; set; }
/// <summary>
/// Default time to live used when publishing messages
/// </summary>
long TimeToLive { get; set; }
/// <summary>
/// Set the default MIME type for messages produced by this producer.
/// This reduces the overhead of each message.
/// </summary>
string MimeType { get; set; }
/// <summary>
/// Set the default encoding for messages produced by this producer.
/// This reduces the overhead of each message.
/// </summary>
string Encoding { get; set; }
/// <summary>
/// Publish a message, using any default values configured
/// </summary>
/// <param name="msg">Message to publish</param>
void Send(IMessage msg);
/// <summary>
/// Publish a message with the specified options
/// </summary>
/// <param name="msg">Message to publish</param>
/// <param name="deliveryMode">Delivery mode to use</param>
/// <param name="priority">Priority of the message</param>
/// <param name="timeToLive">Time to live of the message</param>
void Send(IMessage msg, DeliveryMode deliveryMode, int priority, long timeToLive);
}
}