A bank-specific OBP adapter built on top of the OBP-Rabbit-Cats-Adapter framework.
This adapter implements the LocalAdapter interface to connect OBP (Open Bank Project) API to a Core Banking System (CBS) via RabbitMQ messaging. Currently configured with mock/stub data for development and testing.
- Java 11+
- Maven 3.6+
- The OBP-Rabbit-Cats-Adapter library installed locally
First, you need to build and install the OBP-Rabbit-Cats-Adapter library:
cd /path/to/OBP-Rabbit-Cats-Adapter
mvn clean installcd /path/to/my-obp-bank-rabbit-cats-compatible-adapter
mvn clean packageThis produces a fat JAR at target/mybank-obp-adapter-1.0.0-SNAPSHOT.jar.
Configure RabbitMQ connection via environment variables:
| Variable | Default | Description |
|---|---|---|
RABBITMQ_HOST |
localhost |
RabbitMQ server hostname |
RABBITMQ_PORT |
5672 |
RabbitMQ AMQP port |
RABBITMQ_USERNAME |
guest |
RabbitMQ username |
RABBITMQ_PASSWORD |
guest |
RabbitMQ password |
RABBITMQ_VIRTUAL_HOST |
/ |
RabbitMQ virtual host |
RABBITMQ_REQUEST_QUEUE |
obp.request |
Queue for incoming OBP messages |
RABBITMQ_RESPONSE_QUEUE |
obp.response |
Queue for outgoing responses |
HTTP_SERVER_ENABLED |
true |
Enable discovery HTTP server |
HTTP_SERVER_PORT |
52345 |
Discovery server port |
REDIS_ENABLED |
false |
Enable Redis for message counting |
# With default settings (localhost RabbitMQ)
java -jar target/mybank-obp-adapter-1.0.0-SNAPSHOT.jar
# With custom RabbitMQ settings
RABBITMQ_HOST=rabbitmq.example.com \
RABBITMQ_USERNAME=myuser \
RABBITMQ_PASSWORD=mypassword \
java -jar target/mybank-obp-adapter-1.0.0-SNAPSHOT.jarThe adapter currently supports the following OBP message types:
| Operation | Description |
|---|---|
obp.getAdapterInfo |
Get adapter metadata and supported operations |
obp.getBank |
Get bank information |
obp.getBanks |
Get list of all banks |
obp.getBankAccount |
Get account details |
obp.getBankAccounts |
Get list of accounts |
obp.getTransaction |
Get transaction details |
obp.getTransactions |
Get transaction history |
obp.checkFundsAvailable |
Check if funds are available |
obp.makePayment |
Process a payment |
my-obp-bank-rabbit-cats-compatible-adapter/
├── pom.xml # Maven configuration
├── README.md # This file
├── LICENSE # License file
└── src/
└── main/
├── scala/
│ └── com/
│ └── mybank/
│ └── adapter/
│ ├── MyBankLocalAdapter.scala # Local adapter implementation
│ └── MyBankMain.scala # Application entry point
└── resources/
└── logback.xml # Logging configuration
To connect to a real Core Banking System, modify the MyBankLocalAdapter.scala:
- Add HTTP client dependencies to
pom.xml(http4s is already included via the base library) - Replace mock method implementations with actual CBS API calls
- Update error handling for CBS-specific error codes
- Add authentication/authorization for CBS connections
Example of calling a real CBS API:
import org.http4s.client.Client
import org.http4s.ember.client.EmberClientBuilder
private def getBank(data: JsonObject, callContext: CallContext): IO[LocalAdapterResult] = {
val bankId = data("bankId").flatMap(_.asString).getOrElse("unknown")
EmberClientBuilder.default[IO].build.use { client =>
client.expect[Json](s"https://cbs.mybank.com/api/banks/$bankId")
.map { response =>
LocalAdapterResult.success(response.asObject.getOrElse(JsonObject.empty))
}
.handleErrorWith { error =>
IO.pure(LocalAdapterResult.error("CBS_ERROR", error.getMessage))
}
}
}# Start RabbitMQ
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
# Run the adapter
java -jar target/mybank-obp-adapter-1.0.0-SNAPSHOT.jarYou can send test messages to the obp.request queue using the RabbitMQ Management UI or a client tool:
{
"process": "obp.getBank",
"outboundAdapterCallContext": {
"correlationId": "test-123",
"sessionId": "session-456"
},
"bankId": "mybank-01"
}┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ OBP API │────▶│ RabbitMQ │────▶│ MyBank │
│ │ │ obp.request │ │ Local Adapter │
└─────────────────┘ └──────────────────┘ └────────┬────────┘
│
▼
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ OBP API │◀────│ RabbitMQ │◀────│ CBS Connection │
│ │ │ obp.response │ │ (Mock/Real) │
└─────────────────┘ └──────────────────┘ └─────────────────┘
See the LICENSE file for details.