Contact Us 1-800-596-4880

JMS Connector Reference 1.9 - Mule 4

JMS Connector Version 1.9

Anypoint Connector for JMS (JMS Connector) is a JMS 1.0.2b, 1.1, and 2.0 compliant MuleSoft Extension, used to consume and produce JMS messages. The extension supports all JMS functionality including topics and queues, durable subscribers, acknowledgment modes and local transactions.

Configurations


Default Configuration

Base configuration for JMS Connector

Parameters

Name Type Description Default Value Required

Name

String

The name for this configuration. Connectors reference the configuration with this name.

x

Encoding

String

The default encoding of the message body to use if the message doesn’t communicate it

Content Type

String

The default contentType of the message body to use if the message doesn’t communicate it

/

Send Correlation Id

Enumeration, one of:

  • AUTO

  • ALWAYS

  • NEVER

Whether to specify a correlationId when publishing messages. This applies both for custom correlation IDs specifies at the operation level and for default correlation IDs taken from the current event

AUTO

Expiration Policy

Configures the minimum amount of time that a dynamic configuration instance can remain idle before Mule considers it eligible for expiration. This does not mean that the platform expires the instance at the exact moment that it becomes eligible. Mule purges the instances as appropriate.

Ack Mode

Enumeration, one of:

  • IMMEDIATE

  • AUTO

  • MANUAL

  • DUPS_OK

The ConsumerAckMode to use when consuming a message. Can be overridden at the message source level. This attribute has to be IMMEDIATE if transactionType is LOCAL or MULTI

AUTO

Consumer Type

One of:

The ConsumerType to use by default when consuming a message. Can be overridden at the message source level.

Selector

String

Default selector to use for filtering when consuming a message. Can be overridden at the message source level.

Max Redelivery

Number

Do not configure this parameter here, as it has no effect. See [ActiveMQConnectionFactoryConfiguration]

0

Persistent Delivery

Boolean

Sets the default value for the Message#getJMSDeliveryMode. If true, the DeliveryMode#PERSISTENT mode will be used, which instructs the JMS provider to take extra care to insure the message is not lost in transit due to a JMS provider failure.

false

Priority

Number

Defines the default Message#getJMSPriority to use when sending messages

4

Time To Live

Number

Defines the default time the message is in the broker before it expires and is discarded

0

Time To Live Unit

Enumeration, one of:

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

A TimeUnit which qualifies the #timeToLive attribute. Defaults to MILLISECONDS

MILLISECONDS

Disable Message Id

Boolean

Defines the default value to use when producing messages, for disabling the Message#getJMSMessageID generation in the broker. Depending on the provider it may or may not have effect

false

Disable Message Timestamp

Boolean

Defines the default value to use, when producing messages, for disable Message#getJMSTimestamp generation in the broker. Depending on the provider it may or may not have effect.

false

Delivery Delay

Number

This is used to determine the message delivery delay time which is calculated by adding the deliveryDelay value specified on the send method to the time the message was sent. Only used in JmsSpecification#JMS_2_0

Delivery Delay Unit

Enumeration, one of:

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

A TimeUnit which qualifies the #deliveryDelay attribute. Defaults to MILLISECONDS

MILLISECONDS

Jms Type

String

A message JMSType identifier supplied by a client when a message is sent.

Operations

Associated Sources

Consume

<jms:consume>

Operation that allows the user to consume a single message from a given Destination.

Parameters

Name Type Description Default Value Required

Configuration

String

The name of the configuration to use.

x

Destination

String

The name of the Destination from where the message should be consumed

x

Consumer Type

One of:

The type of the MessageConsumer that is required for the given destination, along with any extra configurations that are required based on the destination type.

Ack Mode

Enumeration, one of:

  • IMMEDIATE

  • MANUAL

The ConsumerAckMode to configure over the message and Session

Selector

String

A custom JMS selector for filtering the messages

Content Type

String

The Message’s content type

Encoding

String

The Message’s content encoding

Maximum Wait

Number

Maximum time to wait for a message before timing out

10000

Maximum Wait Unit

Enumeration, one of:

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

Time unit to use in the maximumWaitTime configurations

MILLISECONDS

Transactional Action

Enumeration, one of:

  • ALWAYS_JOIN

  • JOIN_IF_POSSIBLE

  • NOT_SUPPORTED

The type of joining action that operations can take regarding transactions.

JOIN_IF_POSSIBLE

Target Variable

String

The name of a variable to store the operation’s output.

Target Value

String

An expression to evaluate against the operation’s output and store the expression outcome in the target variable

#[payload]

Reconnection Strategy

A retry strategy in case of connectivity errors.

Output

Type

Any

Attributes Type

For Configurations

Throws

  • JMS:RETRY_EXHAUSTED

  • JMS:ACK

  • JMS:DESTINATION_NOT_FOUND

  • JMS:SECURITY

  • JMS:TIMEOUT

  • JMS:CONNECTIVITY

  • JMS:CONSUMING

Publish

<jms:publish>

Operation that allows the user to send a message to a JMS Destination.

Parameters

Name Type Description Default Value Required

Configuration

String

The name of the configuration to use.

x

Destination

String

The name of the Destination where the message should be sent

x

Destination Type

Enumeration, one of:

  • QUEUE

  • TOPIC

The DestinationType of the destination

QUEUE

Transactional Action

Enumeration, one of:

  • ALWAYS_JOIN

  • JOIN_IF_POSSIBLE

  • NOT_SUPPORTED

Transactional Action for the operation. Indicates if the publish must be executed or not in a transaction.

JOIN_IF_POSSIBLE

Send Correlation Id

Enumeration, one of:

  • AUTO

  • ALWAYS

  • NEVER

options on whether to include an outbound correlation ID or not

Body

Any

The body of the message

#[payload]

JMS Type

String

The JMSType header of the message

Correlation ID

String

The JMSCorrelationID header of the message

Send Content-Type

Boolean

True if the body type should be sent as a message property

true

Content-Type

String

The content type of the body

Send Encoding

Boolean

True if the body outboundEncoding should be sent as a message property

true

Encoding

String

The outboundEncoding of the message’s body

Reply To

The JMSReplyTo header information of the Destination where this message should be replied to

User Properties

Object

The custom user properties that should be set to this message

JMSX Properties

The JMSX properties that should be set to this message

Persistent Delivery

Boolean

If true, the message is sent using the PERSISTENT JMSDeliveryMode

Priority

Number

The default JMSPriority value to use when sending the message

Time To Live

Number

Defines the default time the message is in the broker before it expires and is discarded

Time To Live Unit

Enumeration, one of:

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

Time unit to use in the timeToLive configurations

Disable Message Id

Boolean

If true, the message is flagged to avoid generating its MessageID

Disable Message Timestamp

Boolean

If true, the message is flagged to avoid generating its sent Timestamp

Delivery Delay

Number

Only used by JMS 2.0. Sets the delivery delay to be applied to postpone the message delivery

Delivery Delay Unit

Enumeration, one of:

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

Time unit to use in the deliveryDelay configurations

Reconnection Strategy

A retry strategy in case of connectivity errors.

For Configurations

Throws

  • JMS:RETRY_EXHAUSTED

  • JMS:ILLEGAL_BODY

  • JMS:PUBLISHING

  • JMS:DESTINATION_NOT_FOUND

  • JMS:SECURITY

  • JMS:CONNECTIVITY

Publish Consume

<jms:publish-consume>

Operation that allows the user to send a message to a JMS Destination and waits for a response either to the provided ReplyTo destination or to a temporary Destination created dynamically.

Parameters

Name Type Description Default Value Required

Configuration

String

The name of the configuration to use.

x

Destination

String

The name of the Destination where the message should be sent

x

Request-Reply Pattern

Enumeration, one of:

  • CORRELATION_ID

  • MESSAGE_ID

  • NONE

CORRELATION_ID

Send Correlation ID

Enumeration, one of:

  • AUTO

  • ALWAYS

  • NEVER

options on whether to include an outbound correlation ID or not

Body

Any

The body of the message

#[payload]

JMS Type

String

The JMSType header of the message

Correlation ID

String

The JMSCorrelationID header of the message

Send Content-Type

Boolean

True if the body type should be sent as a message property

true

Content-Type

String

The content type of the body

Send Encoding

Boolean

True if the body outboundEncoding should be sent as a message property

true

Encoding

String

The outboundEncoding of the message’s body

Reply To

The JMSReplyTo header information of the Destination where this message should be replied to

User Properties

Object

The custom user properties that should be set to this message

JMSX Properties

The JMSX properties that should be set to this message

Persistent Delivery

Boolean

If true, the message is sent using the PERSISTENT JMSDeliveryMode

Priority

Number

The default JMSPriority value to use when sending the message

Time To Live

Number

Defines the default time the message is in the broker before it expires and is discarded

Time To Live Unit

Enumeration, one of:

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

Time unit to use in the timeToLive configurations

Disable Message Id

Boolean

If true, the message is flagged to avoid generating its MessageID

Disable Message Timestamp

Boolean

If true, the message is flagged to avoid generating its sent Timestamp

Delivery Delay

Number

Only used by JMS 2.0. Sets the delivery delay to be applied to postpone the message delivery

Delivery Delay Unit

Enumeration, one of:

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

Time unit to use in the deliveryDelay configurations

Ack Mode

Enumeration, one of:

  • IMMEDIATE

  • MANUAL

The Session ACK mode to use when consuming the message

Maximum Wait

Number

Maximum time to wait for a message to arrive before timeout

10000

Maximum Wait Unit

Enumeration, one of:

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

Time unit to use in the maximumWaitTime configuration

MILLISECONDS

Content Type

String

The content type of the message body to be consumed

Encoding

String

The encoding of the message body to be consumed

Target Variable

String

The name of a variable to store the operation’s output.

Target Value

String

An expression to evaluate against the operation’s output and store the expression outcome in the target variable

#[payload]

Reconnection Strategy

A retry strategy in case of connectivity errors.

Output

Type

Any

Attributes Type

For Configurations

Throws

  • JMS:RETRY_EXHAUSTED

  • JMS:ILLEGAL_BODY

  • JMS:ACK

  • JMS:PUBLISHING

  • JMS:DESTINATION_NOT_FOUND

  • JMS:SECURITY

  • JMS:TIMEOUT

  • JMS:CONNECTIVITY

  • JMS:CONSUMING

Ack

<jms:ack>

Allows the user to perform an ACK when the AckMode#MANUAL mode is elected while consuming the Message. As per JMS Spec, performing an ACK over a single message automatically works as an ACK for all the Messages produced in the same JmsSession.

Parameters

Name Type Description Default Value Required

Ack Id

String

The AckId of the message to ACK

x

Throws

  • JMS:ACK

Recover Session

<jms:recover-session>

Allows the user to perform a session recover when the AckMode#MANUAL mode is elected while consuming the Message. As per JMS Spec, performing a session recover automatically redelivers all the consumed messages that had not being acknowledged before this recover.

Parameters

Name Type Description Default Value Required

Ack Id

String

The AckId of the message Session to recover

x

Throws

  • JMS:SESSION_RECOVER

Sources

On New Message

<jms:listener>

JMS Subscriber for Destinations, allows to listen for incoming Messages

Parameters

Name Type Description Default Value Required

Configuration

String

The name of the configuration to use.

x

Destination

String

The name of the Destination from where the message should be consumed

x

Consumer Type

One of:

The Type of the Consumer that should be used for the provided destination

Acknowledge Mode

Enumeration, one of:

  • IMMEDIATE

  • AUTO

  • MANUAL

  • DUPS_OK

The Session ACK mode to use when consuming a message

Selector

String

JMS selector to use for filtering incoming messages

Inbound Content-Type

String

The content type of the message body

Inbound Encoding

String

The inboundEncoding of the message body

Number Of Consumers

Number

The number of concurrent consumers to use to receive JMS Messages

4

Transactional Action

Enumeration, one of:

  • ALWAYS_BEGIN

  • NONE

The type of beginning action that sources can take regarding transactions.

NONE

Transaction Type

Enumeration, one of:

  • LOCAL

  • XA

The type of transaction to create. Availability depends on Mule version.

LOCAL

Primary Node Only

Boolean

Whether this source should only be executed on the primary node when running in Cluster

true

Redelivery Policy

Defines a policy for processing the redelivery of the same message

Reconnection Strategy

A retry strategy in case of connectivity errors.

Ignore JMS replyTo header

Boolean

True if no automatic response is needed for messages with destination header

false

Body

Any

The body of the message

#[payload]

JMS Type

String

The JMSType header of the message

Correlation ID

String

The JMSCorrelationID header of the message

Send Content-Type

Boolean

True if the body type should be sent as a message property

true

Content-Type

String

The content type of the body

Send Encoding

Boolean

True if the body outboundEncoding should be sent as a message property

true

Encoding

String

The outboundEncoding of the message’s body

Reply To

The JMSReplyTo header information of the Destination where this message should be replied to

User Properties

Object

The custom user properties that should be set to this message

JMSX Properties

The JMSX properties that should be set to this message

Persistent Delivery

Boolean

Whether or not the delivery should be done with a persistent configuration

Priority

Number

The default JMSPriority value to use when sending the message

Time To Live

Number

Defines the default time the message is in the broker before it expires and is discarded

Time To Live Unit

Enumeration, one of:

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

Time unit to use in the timeToLive configurations

Disable Message ID

Boolean

If true, the message is flagged to avoid generating its MessageID

Disable Message Timestamp

Boolean

If true, the message is flagged to avoid generating its sent Timestamp

Delivery Delay

Number

Only used by JMS 2.0. Sets the delivery delay to be applied to postpone the message delivery

Delivery Delay Unit

Enumeration, one of:

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

Time unit to use in the deliveryDelay configurations

Send Correlation ID

Enumeration, one of:

  • AUTO

  • ALWAYS

  • NEVER

Options on whether to include an outbound correlation ID or not

Request Reply Pattern

Enumeration, one of:

  • CORRELATION_ID

  • MESSAGE_ID

  • NONE

Indicates which Request Reply Pattern to use. By default uses the Correlation ID of the incoming message to do the Reply-To. In case of configuring the message ID pattern, the ReplyTo will be performed using the message ID of the incoming message. If NONE is selected, not correlation ID will be configured automatically.

CORRELATION_ID

Output

Type

Any

Attributes Type

For Configurations

Types

Expiration Policy

Field Type Description Default Value Required

Max Idle Time

Number

A scalar time value for the maximum amount of time a dynamic configuration instance should be allowed to be idle before it’s considered eligible for expiration

Time Unit

Enumeration, one of:

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

A time unit that qualifies the maxIdleTime attribute

JMS Attributes

Field Type Description Default Value Required

Properties

Container element for all the properties present in a JMS Message.

Headers

Any

All the possible headers of a JMS message.

x

Ack Id

String

The session Ack ID required to acknowledge the current message if one is available, otherwise, it is null.

JMS Message Properties

Field Type Description Default Value Required

All

Any

All the properties of the JMS message as a flattened map.

x

User Properties

Any

The user-provided properties of the JMS message.

x

Jms Properties

Any

JMS message broker and provider properties.

x

Jmsx Properties

JMSX properties of the JMS message.

JMSX Properties

Field Type Description Default Value Required

Jmsx User ID

String

The user identity that sends the message.

Jmsx App ID

String

Identity of the application that sends the message.

Jmsx Delivery Count

Number

The number of message delivery attempts.

Jmsx Group ID

String

The message group identity of the message.

Jmsx Group Seq

Number

The sequence number of the message in the group.

Jmsx Producer TXID

String

Identifier of the transaction that produced the message.

Jmsx Consumer TXID

String

Identifier of the transaction that consumed the message.

Jmsx Rcv Timestamp

Number

The time JMS delivered the message to the consumer.

Redelivery Policy

Field Type Description Default Value Required

Max Redelivery

Number

Do not configure this parameter here, as it has no effect. See [ActiveMQConnectionFactoryConfiguration]

0

Use Secure Hash

Boolean

Whether to use a secure hash algorithm to identify a redelivered message.

Message Digest Algorithm

String

The secure hashing algorithm to use. If not set, the default is SHA-256.

Id Expression

String

Defines one or more expressions to use to determine when a message has been redelivered. This property may only be set if useSecureHash is false.

Object Store

Object Store

The object store where the redelivery counter for each message is stored.

Reconnect

Field Type Description Default Value Required

Frequency

Number

How often to reconnect (in milliseconds)

Count

Number

The number of reconnection attempts to make

blocking

Boolean

If false, the reconnection strategy runs in a separate, non-blocking thread

true

Reconnect Forever

Field Type Description Default Value Required

Frequency

Number

How often in milliseconds to reconnect

blocking

Boolean

If false, the reconnection strategy runs in a separate, non-blocking thread

true

JMS Destination

Field Type Description Default Value Required

Destination

String

The name that identifies the destination where to send a reply to a message.

x

Destination Type

Enumeration, one of:

  • QUEUE

  • TOPIC

the type of this destination

QUEUE

JMSX Properties

Field Type Description Default Value Required

Jmsx User ID

String

The user identity that sends the message.

Jmsx App ID

String

Identity of the application that sends the message.

Jmsx Delivery Count

Number

The number of message delivery attempts.

Jmsx Group ID

String

The message group identity of the message.

Jmsx Group Seq

Number

The sequence number of the message in the group.

Jmsx Producer TXID

String

Identifier of the transaction that produced the message.

Jmsx Consumer TXID

String

Identifier of the transaction that consumed the message.

Jmsx Rcv Timestamp

Number

The time JMS delivered the message to the consumer.

TLS

Field Type Description Default Value Required

Enabled Protocols

String

A comma separated list of protocols enabled for this context.

Enabled Cipher Suites

String

A comma separated list of cipher suites enabled for this context.

Trust Store

Key Store

Revocation Check

Trust Store

Field Type Description Default Value Required

Path

String

The location (which will be resolved relative to the current classpath and file system, if possible) of the trust store.

Password

String

The password used to protect the trust store.

Type

String

The type of store used.

Algorithm

String

The algorithm used by the trust store.

Insecure

Boolean

If true, no certificate validations will be performed, rendering connections vulnerable to attacks. Use at your own risk.

Key Store

Field Type Description Default Value Required

Path

String

The location (which will be resolved relative to the current classpath and file system, if possible) of the key store.

Type

String

The type of store used.

Alias

String

When the key store contains many private keys, this attribute indicates the alias of the key that should be used. If not defined, the first key in the file will be used by default.

Key Password

String

The password used to protect the private key.

Password

String

The password used to protect the key store.

Algorithm

String

The algorithm used by the key store.

Standard Revocation Check

Field Type Description Default Value Required

Only End Entities

Boolean

Only verify the last element of the certificate chain.

Prefer Crls

Boolean

Try CRL instead of OCSP first.

No Fallback

Boolean

Do not use the secondary checking method (the one not selected before).

Soft Fail

Boolean

Avoid verification failure when the revocation server can not be reached or is busy.

Custom OCSP Responder

Field Type Description Default Value Required

Url

String

The URL of the OCSP responder.

Cert Alias

String

Alias of the signing certificate for the OCSP response (must be in the trust store), if present.

CRL File

Field Type Description Default Value Required

Path

String

The path to the CRL file.

Reconnection

Field Type Description Default Value Required

Fails Deployment

Boolean

When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment fails if the test doesn’t pass after exhausting the associated reconnection strategy.

Reconnection Strategy

The reconnection strategy to use.

Active MQ Connection Factory Configuration

Field Type Description Default Value Required

Broker Url

String

The address of the broker to connect

vm://localhost?broker.persistent=false&broker.useJmx=false

Enable Xa

Boolean

ConnectionFactory should support XA

false

Initial Redelivery Delay

Number

Used to configure the RedeliveryPolicy#getInitialRedeliveryDelay(). This feature is not available in an XA context.

1000

Redelivery Delay

Number

Used to configure the RedeliveryPolicy#getRedeliveryDelay(). This feature is not available in an XA context.

1000

Max Redelivery

Number

Used to configure the RedeliveryPolicy#getMaximumRedeliveries(). Sets the maximum number of times a message will be redelivered before it is sent to the Dead Letter Queue. No redelivery is represented with 0, while -1 means infinite re deliveries accepted.

0

Trusted Packages

Array of String

Allowed packages of classes to send and receive. Starting with versions 5.12.2 and 5.13.0, ActiveMQ requires you to explicitly allow packages that can be exchanged using ObjectMessages.

Trust All Packages

Boolean

Indicates if a class from any package can be sent and received. Enabling this parameter is unsafe because a malicious payload can exploit the host system. Starting with versions 5.12.2 and 5.13.0, ActiveMQ requires you to explicitly allow packages that can be exchanged using ObjectMessages.

false

Topic Consumer

Field Type Description Default Value Required

Durable

Boolean

Indicates if messages are cached when the client is not connected.

false

Shared

Boolean

Indicates if the subscription is shared among consumers.

false

No Local

Boolean

Inhibits the delivery of messages published by its own connection.

false

Subscription Name

String

Name of the subscription.

Default Caching

Field Type Description Default Value Required

Session Cache Size

Number

Size of the session cache.

Cache Producers

Boolean

Indicates whether or not to cache the producer.

true

Cache Consumers

Boolean

Indicates whether or not to cache the consumer.

true

JNDI Connection Factory

Field Type Description Default Value Required

Connection Factory Jndi Name

String

Name of the ConnectionFactory to be discovered using Jndi and used as a delegate of ConnectionFactory

x

Lookup Destination

Enumeration, one of:

  • NEVER

  • ALWAYS

  • TRY_ALWAYS

The Destinations

NEVER

Name Resolver Provider

Provider for the JndiNameResolver

x

JNDI Name Resolver Provider

Field Type Description Default Value Required

Custom JNDI Name Resolver

Reference to a custom JndiNameResolver implementation

Name Resolver Builder

Properties required to build a SimpleJndiNameResolver

JNDI Name Resolver Properties

Field Type Description Default Value Required

Jndi Initial Context Factory

String

The fully qualified name of the factory class that creates the initial context.

x

Jndi Provider Url

String

The JNDI service provider URL.

Provider Properties

Object

Properties to pass to the JNDI Name Resolver Context

Simple JNDI Name Resolver

Field Type Description Default Value Required

Context Factory

Object

The fully qualified name of the factory class that creates the initial context.

Jndi Initial Factory

String

The name of the environment property for specifying the initial context factory to use.

Jndi Provider Properties

Object

Properties to pass to the JNDI Name Resolver Context.

Jndi Provider Url

String

URL of the JNDI provider.

Cached JNDI Name Resolver

Field Type Description Default Value Required

Context Factory

Object

The fully qualified class name of the factory class that creates the initial context.

Jndi Initial Factory

String

The name of the environment property for specifying the initial context factory to use.

Jndi Provider Properties

Object

Properties to pass to the JNDI Name Resolver Context.

Jndi Provider Url

String

URL of the JNDI provider.

System Properties

You can configure the following system properties for the connector:

Property Description

mule.jms.generic.additionalCertificateFileName

JKS file name that contains SSL certificates to add.

mule.jms.generic.additionalCertificatePassword

Truststore password that you set for the mule.jms.generic.additionalCertificatePassword property.

Note that when you configure these system properties, do not configure the Caching strategy field to the Default caching (Default) option. Configure the field to No caching.

View on GitHub