Foreign destinations and alias destinations

Foreign destinations and alias destinations are types of bus destination. A foreign destination represents a destination that is defined in another bus (a foreign bus). An alias destination maps to an alternative name for a bus destination that is defined either in the local bus or in a foreign bus.

Usually, you do not need to configure a foreign destination or an alias destination:
  • For an application to send messages to a destination that is defined in the local bus, you specify the bus name and the destination name in the JMS destination object (queue or topic).

    It is possible to omit the bus name, because the default is the local bus name, but for a system with more than one bus, it is advisable to specify the bus name.

  • For an application to send messages to a destination that is defined in a foreign bus, you specify the bus name (that is, the foreign bus) and the destination name in the JMS destination object (queue or topic). You do not need to configure any destination objects in the local bus.

    Service integration uses the definition of the foreign bus that is configured on the local bus. This definition includes default values for the destination attributes, such as the default quality of service. These default values apply to all destinations in that foreign bus. For more information, see the topic about point-to-point messaging across multiple buses.

You use a foreign destination when you need to override messaging defaults, security settings, or both for an individual destination on a foreign bus. You define a foreign destination on the local bus. When an application that is connected to the local bus sends messages to the destination in the foreign bus, the attributes of the foreign destination override the destination default values. You can set properties and destination roles, but you cannot map to an alternative name for the destination.

You use an alias destination when you need to use an alternative name for a bus destination. The bus destination can be on the local bus or on a foreign bus. You configure an alias destination on the local bus. When an application in the local bus uses the alias destination, the specified bus name and destination name are mapped to a new name. If you use an alias destination, you can also set properties, destination roles, or both.

When an application that is connected to a bus specifies a destination name and bus name in its JMS destination object (queue or topic) that match the identifier and bus of an alias destination that is defined in that bus, the destination that the application accesses is the same as if the application specified the target identifier and target bus from the alias destination. You can also use a alias destination that is defined in a foreign bus if you need to redirect messages that arrive over a foreign bus connection to differently named destinations or buses, and you cannot modify the configuration of the source bus.

Foreign destinations

A foreign destination represents a destination that is defined in another bus (a foreign bus). You can use a foreign destination for point-to-point messaging. You use a foreign destination if you need to override security settings, or messaging defaults, for an individual destination on a foreign bus. The foreign bus can be another service integration bus or a IBM MQ network (that is, one or more interconnected IBM MQ queue managers or queue-sharing groups).

To override messaging defaults of a destination on a foreign bus, you configure the properties (for example, the default priority) of the foreign destination. To override security settings and control which users and groups in the local bus have access to a destination in a foreign bus, you configure the destination roles of the foreign destination. These properties apply when an application that is connected to the local bus sends messages to the destination in the foreign bus.

When you define a foreign destination, use the actual names of the foreign bus and the destination on the foreign bus, so that the JMS destination object does not change.

When an application that is connected to the local bus sends messages to the destination in the foreign bus, service integration in the local bus uses the properties and destination roles of the foreign destination, rather than the default values from the definition of the foreign bus (on the local bus). Typically, you configure the properties of a foreign destination to match the properties that are configured for that destination in the foreign bus (where that destination is a local destination), but this is not essential.

You can also configure destination roles for the foreign destination. Service integration in the local bus uses these roles to control which users and groups in the local bus have access to the destination. It also complements any access controls that the foreign bus applies.

You do not use foreign destinations for publish-subscribe messaging. Instead, applications publish messages locally using a topic space destination in the local bus, and you configure a service integration bus link or a WebSphere MQ link. These links propagate the published messages into the foreign bus, or buses, where subscribers receive the messages. For a link to a service integration bus, configure topic space mappings. For a link to a WebSphere MQ network, configure a publish/subscribe bridge.

Service integration cannot use configuration information that is scoped to a foreign bus. Therefore, if an appropriate foreign destination is not defined on the local bus, service integration uses default values for the destination attributes.

Figure 1 shows a JMS application that sends messages from the local bus, Bus 1, to a destination in a foreign bus, Bus 2. Bus 1 has a foreign bus connection defined, which it uses to forward the message to the foreign bus. The foreign destination is not defined in the local bus. Bus 1 gets the destination defaults from the foreign bus connection.

Figure 1. Point-to-point messaging between two buses with no foreign destination configured
Graphic is described in the surrounding text.

Figure 2 shows a JMS application that sends messages from the local bus, Bus 1, to a destination in a foreign bus, Bus 2. Bus 1 has a foreign bus connection defined, which it uses to forward the message to the foreign bus. Bus 1 includes a foreign destination definition. Bus 1 gets the destination defaults from the foreign destination.

Figure 2. Point-to-point messaging between two buses with a foreign destination configured on the local bus
Graphic is described in the surrounding text.

Alias destinations

An alias destination maps an alternative name for a bus destination. You can use an alias destination for point-to-point messaging or publish/subscribe messaging. An alias destination maps a bus name and destination name (identifier) to a target where the bus name, or the destination name, or both, are different. An alias destination can map to a queue destination or a topic space destination. If required, alias destinations can be chained so that the target destination is itself an alias destination.

You use an alias destination when you need to make a destination available under an alternative name. For example:
  • You need to interoperate with WebSphere MQ, but some service integration bus names or destination names do not comply with IBM MQ naming restrictions (for example, the names are too long). You can define an alias destination that maps an IBM MQ-compliant name to the service integration name.

    For example, an application sends a message to an IBM MQ application and the reply-to destination name does not comply with the IBM MQ naming restrictions. You can define an alias that maps a compliant name to the actual reply-to destination name. The application then specifies the alias destination as the reply-to.

    Another example is an application that sends a message through an IBM MQ foreign bus to a remote service integration foreign bus when the send-to destination name does not comply with the IBM MQ naming restrictions. You can define an alias in the remote bus that maps a compliant name to the actual send-to destination name. The application then specifies the alias destination as the send-to. If you want the sending application to use the actual destination name, you can define an alias in the local bus that maps the actual destination name to the compliant name.

  • If you move a destination from one bus to another (by deleting it, then creating it on another bus), you can create an alias destination that redirects messages from the old destination to the new one. You must create the alias destination in every bus where applications reference the destination, for example, the bus that the destination is moved from, and the bus that the destination is moved to.

    However, it might be simpler to change the JMS destinations that are registered with JNDI to point to the new destination.

  • You can assign an alias destination to a subset of the queue points of a partitioned queue destination, and therefore use the alias destination to restrict the queue points that the producing and consuming applications use.

When you use an alias destination, you can also set properties (for example, the default quality of service) for the alias destination. When an application uses the alias destination, these properties override the properties of the target destination. If you do not want to override a property, configure the alias destination to inherit the corresponding property from the target destination.

When you use an alias destination, you can also configure destination roles for the alias destination. When the application uses the alias destination, service integration in the local bus uses these roles to control which users and groups in the local bus have access to the target destination. If you do not want to override the security for the target destination, configure the alias destination to delegate the authorization check to the target destination.

Figure 3 shows a JMS application that sends messages from the local bus, Bus 1, to a destination in a foreign bus, Bus 2. Bus 1 has a foreign bus connection defined, which it uses to forward the message to the foreign bus. The JMS destination does not point to the target queue, but points to Bus X, Queue Y. Bus 1 includes an alias destination that maps Bus X, Queue Y to the target destination Bus 2, Queue 2. Bus 1 gets the destination defaults from the alias destination.

Figure 3. Point-to-point messaging between two buses with an alias destination configured on the local bus
Graphic is described in the surrounding text.

Using an alias destination for a destination in a foreign bus

If an application uses an alias destination to access a destination that is defined in a foreign bus, you can configure the alias destination with the specific properties, destination roles, or both that the application requires. This means that you probably do not need to define a foreign destination as well.