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