Get up and running with GOSS in 5 minutes.
- Java 21 installed
- Git for cloning the repository
git clone <your-repository-url>
cd GOSS
# Verify Java 21
java -version
# Build executable JARs
./gradlew :pnnl.goss.core.runner:createSimpleRunner# Navigate to executable
cd pnnl.goss.core.runner/generated/executable
# Start GOSS (will run until Ctrl+C)
java -jar goss-simple-runner.jarYou should see:
Starting GOSS Simple Runner...
GOSS Core services are running
ActiveMQ Broker: tcp://0.0.0.0:61617
STOMP: tcp://0.0.0.0:61618
GOSS Simple Runner started successfully!
Press Ctrl+C to stop
// Connect to GOSS
ClientFactory factory = new ClientFactoryImpl();
Client client = factory.create("tcp://localhost:61617");
// Send a message
MyRequest request = new MyRequest();
Response response = client.getResponse(request);# Install STOMP client (optional)
npm install -g stomp-client
# Connect and send message
stomp connect stomp://localhost:61618
stomp send /queue/test "Hello GOSS!"GOSS provides:
- Message Broker: ActiveMQ on port 61617 (OpenWire) and 61618 (STOMP)
- Request/Response: Synchronous and asynchronous messaging
- Security Framework: Apache Shiro (currently disabled for simplicity)
- Extensible Handlers: Plugin architecture for custom request processing
- Read DEVELOPER-SETUP.md for IDE setup
- Explore
pnnl.goss.core/src/for API documentation - Run integration tests:
./gradlew check
- Read PRODUCTION-DEPLOYMENT.md for deployment guide
- Configure SSL/TLS for security
- Set up monitoring and logging
@Component
public class HelloWorldHandler implements RequestHandler {
@Override
public Response handle(Request request) {
return new HelloWorldResponse("Hello from GOSS!");
}
@Override
public Class<? extends Request> getHandledRequestType() {
return HelloWorldRequest.class;
}
}Port already in use?
# Check what's using port 61617
sudo netstat -tlnp | grep 61617
# Or modify the ports in GossSimpleRunner.java and rebuildJava version issues?
# Make sure you're using Java 21
export JAVA_HOME=/path/to/java-21
java -versionBuild failures?
# Clean build
./gradlew clean build┌─────────────────────────────────────────────┐
│ GOSS Platform │
├─────────────────────────────────────────────┤
│ Request Handlers │ Security Framework │
│ ┌───────────────┐ │ ┌─────────────────┐ │
│ │ Custom │ │ │ Apache Shiro │ │
│ │ Handlers │ │ │ Authentication │ │
│ └───────────────┘ │ │ Authorization │ │
│ │ └─────────────────┘ │
├─────────────────────────────────────────────┤
│ Core GOSS Framework │
│ ┌─────────────────────────────────────────┐ │
│ │ Request/Response API │ │
│ │ Client Factory │ Message Routing │ │
│ └─────────────────────────────────────────┘ │
├─────────────────────────────────────────────┤
│ Apache ActiveMQ Broker │
│ ┌───────────┐ ┌──────────┐ ┌─────────────┐ │
│ │ OpenWire │ │ STOMP │ │ Persistence │ │
│ │:61617 │ │ :61618 │ │ KahaDB │ │
│ └───────────┘ └──────────┘ └─────────────┘ │
└─────────────────────────────────────────────┘
Congratulations! You now have GOSS running. Start building your distributed messaging applications!