---
layout: default_md
title: Configuring ActiveMQ CPP 
title-class: page-title-activemq5
type: activemq5
---

[Connectivity](connectivity) > [Cross Language Clients](cross-language-clients) > [ActiveMQ C++ Clients](activemq-c-clients) > [Configuring ActiveMQ CPP](configuring-activemq-cpp)


The configuration of ActiveMQ is so slick, we decided to take a similar approach with ActiveMQ-CPP. All configuration is achieved via URI-encoded parameters, either on the connection or destinations. Through the URIs, you can configure virtually every facet of your ActiveMQ-CPP client. The tables below show the comprehensive set of parameters.

Connection URI Parameters
-----------------------------

#### Example Configuration

cf = new ActiveMQConnectionFactory(
    "tcp://localhost:61616?wireFormat=openwire&wireFormat.tightEncodingEnabled=true");

### **Socket Options**

Option Name|Default|Description
---|---|---
inputBufferSize|10000|The number of bytes in the buffered input stream's buffer
outputBufferSize|10000|The number of bytes in the buffered output stream's buffer
soLinger|0|Socket SOLinger value
soKeepAlive|false|Socket SOKeepAlive value
soReceiveBufferSize|-1|Socket receive buffer. If -1, use OS default.
soSendBufferSize|-1|Socket send buffer. If -1, use OS default.

### **Transport Options**

Option Name|Default|Description
---|---|---
commandTracingEnabled|false|If true, enables tracing of incoming and outgoing transport commands
tcpTracingEnabled|false|If true, enables tracing of raw network IO (in hex)
useAsyncSend|false|If true, enables asynchronous sending of messages.

### **Transaction Options**

Option Name|Default|Description
---|---|---
transaction.maxRedeliveryCount|5|Maximum number of redelivery attempts.

### **Wire Format Protocol Options**

Option Name|Default|Description
---|---|---
wireFormat|openwire|Selects the wire format to use. Out of the box, can be either stomp or openwire.
wireFormat.stackTraceEnabled|false|Should the stack trace of exception that occur on the broker be sent to the client? Only used by openwire protocol.
wireFormat.cacheEnabled|false|Should commonly repeated values be cached so that less marshalling occurs? Only used by openwire protocol.
wireFormat.tcpNoDelayEnabled|false|Does not affect the wire format, but provides a hint to the peer that TCP nodelay should be enabled on the communications Socket. Only used by openwire protocol.
wireFormat.sizePrefixDisabled|false|Should serialized messages include a payload length prefix? Only used by openwire protocol.
wireFormat.tightEncodingEnabled|false|Should wire size be optimized over CPU usage? Only used by the openwire protocol.

Destination URI Parameters
------------------------------

#### Example Configuration
```
d = session->createTopic("com.foo?consumer.prefetchSize=2000&consumer.noLocal=true");
```

### **General Options**
Option Name|Default|Description
---|---|---
consumer.prefetchSize|1000|The number of message the consumer will [prefetch](what-is-the-prefetch-limit-for).
consumer.maximumPendingMessageLimit|0|Use to control if messages are dropped if a [slow consumer](slow-consumer-handling) situation exists.
consumer.noLocal|false|Same as the noLocal flag on a Topic consumer. Exposed here so that it can be used with a queue.
consumer.dispatchAsync|false|Should the broker [dispatch messages asynchronously](consumer-dispatch-async) to the consumer.
consumer.retroactive|false|Is this a [Retroactive Consumer](retroactive-consumer).
consumer.selector|null|JMS Selector used with the consumer.
consumer.exclusive|false|Is this an [Exclusive Consumer](exclusive-consumer).
consumer.priority|0|Allows you to configure a [Consumer Priority](consumer-priority).

### **OpenWire-only Options**

Option Name|Default|Description
---|---|---
consumer.browser|false|
consumer.networkSubscription|false
consumer.optimizedAcknowledge|false|Enables an optimised acknowledgement mode where messages are acknowledged in batches rather than individually. Alternatively, you could use Session.DUPS\_OK\_ACKNOWLEDGE acknowledgement mode for the consumers which can often be faster. **WARNING** enabling this issue could cause some issues with auto-acknowledgement on reconnection
consumer.noRangeAcks|false
consumer.retroactive|false|Sets whether or not retroactive consumers are enabled. Retroactive consumers allow non-durable topic subscribers to receive old messages that were published before the non-durable subscriber started.
producer.dispatchAsyc|false

