
No producers, no consumers
Classic queues make you write producer and consumer code and a message schema for every event. Graftcode's plugin turns ordinary methods into queued calls.

Keep the broker. Skip the plumbing.
Queues are the right tool for async decoupling. Graftcode's queue plugins keep Kafka or RabbitMQ as the transport — but you call typed methods, not producers and consumers.
/USED BY LEADING COMPANIES
/AT GLANCE
Brokers are great for async. The plumbing around them — producers, consumers, schemas, broker SDKs — is what Graftcode removes.
/WHY SWITCH
REST is the universal edge contract. For internal service and app calls, its plumbing is pure overhead.

Classic queues make you write producer and consumer code and a message schema for every event. Graftcode's plugin turns ordinary methods into queued calls.

Changing from RabbitMQ to Kafka - or the topology - rewrites business code. With Graftcode the plugin owns the channel; your methods don't change.

Rename a field or change its type and consumers break at runtime - no compile-time warning. Graftcode keeps strong typing end to end across the broker.
/SHOW, DON'T TELL
Publishing and handling one event — the broker wiring vs a typed method.
var body = Encoding.UTF8.GetBytes(
JsonSerializer.Serialize(new UserCreated { Id = 42 }));
channel.BasicPublish("users", "user.created", body);consumer.Received += (_, ea) => {
var msg = JsonSerializer.Deserialize<UserCreated>(ea.Body);
Handle(msg); // hope the schema still matches
};
channel.BasicConsume("users", consumer);public class Users {
public void Created(User user) => _handle(user);
}from acme_users import Users
Users.created(user)
# ^ typed, async. swap the broker in config — not here./FEATURE MATRIX
| Capability | REST | Graftcode |
|---|---|---|
| PROGRAMMING MODEL | ||
| Call with Strongly Typed Methods | [×] NO | [✓] YES |
| Regular Exception support | [×] NO | [✓] YES |
| Complex DTOs & arrays passed by value in one call | [✓] YES | [✓] YES |
| PROGRAMMING DEPENDENCIES & CONTRACTS | ||
| No additional SDK | [×] NO | [✓] YES |
| No contract files | [×] NO | [✓] YES |
| Use remote modules as dependencies | [×] NO | [✓] YES |
| TOPOLOGY & TRANSPORT | ||
| Monolith <-> Microservices switch by configuration | [×] NO | [✓] YES |
| Switch remote <-> in-memory with config only | [×] NO | [✓] YES |
| TOPOLOGY & TRANSPORT | ||
| Same programming model for queues / event buses | [-] PARTIAL | [✓] Via plugins |
| Full streaming | [-] PARTIAL | [✓] YES |
| Automatic Native MCP | [×] NO | [✓] YES |
/BY THE NUMBERS
60%
less code for AI to touch
1/8
of REST/RPC overhead via Hypertube™
20
coding languages supported
10
package managers supported
/FAQS
No. Brokers own async decoupling, buffering, replay and fan-out. Graftcode's queue plugin sits on top of Kafka, RabbitMQ or SQS so you call typed methods instead of writing producers and consumers - the broker still does the work.
/COMMUNITY
Many developers are loving Graftcode and what it brings to them.


















“Graftcode appears to be an exceptionally useful platform. Its key value proposition is allowing developers to concentrate on core business requirements instead of tedious service integration tasks. I believe the concept of beginning with a monolithic structure and then having the option to dynamically transition to a microservice architecture will prove to be extremely valuable.”
No producer code, no consumer code, no message schema-just typed methods over the broker you already run.
