Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

cfenv not parsing RMQ hostnames correctly

Open
#167 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
48/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
java, rabbitmq, spring-boot
Domain
backend

Research direction

Start with AmqpCfEnvProcessor.java and CfCredentials.java, then compare their credential handling with the RabbitMQ service broker documentation linked in the issue. Trace how hostname values become Spring RabbitMQ properties; done means the processor preserves all entries from the hostnames environment field instead of exposing only the first node.

Written by the indexing model from the issue text.

Description

enhancement

Issue Description

When a developer uses service broker to attach a multi-node RMQ cluster to his application, cfenv will only parse the 1st node and ignore the others.

Here is an example of what the ENV variables looks like for a multi-node RMQ cluster.

  "p.rabbitmq": [{
    xxx 
    "credentials": {
      xxx
      "hostname": "q-i0.rabbitmq-server.bosh.rabbitmq.bosh",
      "hostnames": [
                            "q-i0.rabbitmq-server.bosh.rabbitmq.bosh",
                            "q-i1.rabbitmq-server.bosh.rabbitmq.bosh",
                            "q-i2.rabbitmq-server.bosh.rabbitmq.bosh"
                              ],
                           }

Note that both hostname and hostnames are listed and hostnames contains the hostname for all 3 nodes.

From the official service broker documentation, both hostname and hostnames are top-level properties for AMQP connection.

The top level properties uri, uris, vhost, username, password, hostname, and hostnames provide access to the AMQP 0.9.1 protocol.

However, AmqpCfEnvProcessor calls cfCredentials.getHost() which only parse host and hostname from ENV.

This leads to application totally ignoring the other nodes in RMQ cluster.

An example of ENV parsed by AmqpCfEnvProcessor can be found below.

      "name": "AmqpCfEnvProcessor",
      "properties": {
        "spring.rabbitmq.host": {
          "value": "q-i0.rabbitmq-server.bosh.rabbitmq.bosh"
        },
        "spring.rabbitmq.password": {
          "value": "******"
        },
        "spring.rabbitmq.username": {
          "value": "09db23ac-0c02-46a9-8959-20729bcf1770"
        },
        "spring.rabbitmq.ssl.enabled": {
          "value": "true"
        },
        "spring.rabbitmq.port": {
          "value": "5671"
        },
        "spring.rabbitmq.virtualHost": {
          "value": "b7124f11-7685-4873-a3e4-24ac9ed3cdba"
        }
      }

As you can see, there is only 1 host.

Expected behavior
AmqpCfEnvProcessor able to parse all nodes from the hostnames ENV variable.

Dominant language
Java
Stars
97
Forks
64
Avg merge
6h 36m
Merged PRs (30d)
6

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from pivotal-cf/java-cfenv

All issues in pivotal-cf/java-cfenv

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.