blob: fe9beee50090bcbc1a85ea8038cea3b216cb4d6d [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;
using Apache.NMS.Policies;
namespace Apache.NMS.MSMQ
{
/// <summary>
/// A Factory that can estbalish NMS connections to MSMQ
/// </summary>
public class ConnectionFactory : IConnectionFactory
{
public const string DEFAULT_BROKER_URL = "msmq://localhost";
public const string ENV_BROKER_URL = "MSMQ_BROKER_URL";
private Uri brokerUri;
private IRedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
public static string GetDefaultBrokerUrl()
{
string answer = Environment.GetEnvironmentVariable(ENV_BROKER_URL);
if(answer == null)
{
answer = DEFAULT_BROKER_URL;
}
return answer;
}
public ConnectionFactory()
: this(GetDefaultBrokerUrl())
{
}
public ConnectionFactory(string brokerUri)
: this(brokerUri, null)
{
}
public ConnectionFactory(string brokerUri, string clientID)
: this(new Uri(brokerUri), clientID)
{
}
public ConnectionFactory(Uri brokerUri)
: this(brokerUri, null)
{
}
public ConnectionFactory(Uri brokerUri, string clientID)
{
this.brokerUri = brokerUri;
}
/// <summary>
/// Creates a new connection to MSMQ.
/// </summary>
public IConnection CreateConnection()
{
return CreateConnection(string.Empty, string.Empty, false);
}
/// <summary>
/// Creates a new connection to MSMQ.
/// </summary>
public IConnection CreateConnection(string userName, string password)
{
return CreateConnection(userName, password, false);
}
/// <summary>
/// Creates a new connection to MSMQ.
/// </summary>
public IConnection CreateConnection(string userName, string password, bool useLogging)
{
IConnection connection = new Connection();
connection.RedeliveryPolicy = this.redeliveryPolicy.Clone() as IRedeliveryPolicy;
connection.ConsumerTransformer = this.consumerTransformer;
connection.ProducerTransformer = this.producerTransformer;
return connection;
}
/// <summary>
/// Get/or set the broker Uri.
/// </summary>
public Uri BrokerUri
{
get { return brokerUri; }
set { brokerUri = value; }
}
/// <summary>
/// Get/or set the redelivery policy that new IConnection objects are
/// assigned upon creation.
/// </summary>
public IRedeliveryPolicy RedeliveryPolicy
{
get { return this.redeliveryPolicy; }
set
{
if(value != null)
{
this.redeliveryPolicy = value;
}
}
}
private ConsumerTransformerDelegate consumerTransformer;
public ConsumerTransformerDelegate ConsumerTransformer
{
get { return this.consumerTransformer; }
set { this.consumerTransformer = value; }
}
private ProducerTransformerDelegate producerTransformer;
public ProducerTransformerDelegate ProducerTransformer
{
get { return this.producerTransformer; }
set { this.producerTransformer = value; }
}
}
}