AgentStack
SKILL verified MIT Self-run

Abp Microservices

skill-burakdmir-abp-skills-abp-microservices · by burakdmir

ABP Framework v10.4 microservice quick reference: Integration Services [IntegrationService], distributed events (RabbitMQ Outbox/Inbox), YARP gateway, OpenIddict, Entity Cache, database-per-service. Use when you need microservices or inter-service communication in ABP.

No reviews yet
0 installs
6 views
0.0% view→install

Install

$ agentstack add skill-burakdmir-abp-skills-abp-microservices

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Abp Microservices? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

ABP Framework — Microservices

ABP v10.4 microservice template (Business+). Synchronous = Integration Services, asynchronous = distributed events. YARP gateway + OpenIddict auth server.

Trigger

"ABP microservices", "integration service", "inter-service communication", "distributed event", "YARP gateway", "auth server".

Structure

apps/{web,public-web,auth-server}  gateways/web-gateway(YARP)
services/{administration,identity,...}  etc/{docker,helm}

Services are NOT layered: a single project + *.Contracts (interface/DTO/ETO) + *.Tests. DbContext: IHasEventInbox, IHasEventOutbox.

Synchronous — Integration Service

// Contracts
[IntegrationService]
public interface IProductIntegrationService : IApplicationService
{ Task> GetProductsByIdsAsync(List ids); }

// Service
[IntegrationService]
public class ProductIntegrationService : ApplicationService, IProductIntegrationService { /* ... */ }

// Provider module: options.ExposeIntegrationServices = true;
// Consumer module: context.Services.AddStaticHttpClientProxies(typeof(CatalogServiceContractsModule).Assembly, "CatalogService");
abp generate-proxy -t csharp -u http://localhost:44361 -m catalog --without-contracts
"RemoteServices": { "CatalogService": { "BaseUrl": "http://localhost:44361" } }

> Use an Integration Service, not an application service. When: immediate response + data needed for the operation.

Asynchronous — Distributed Event (RabbitMQ)

[EventName("Product.StockChanged")]
public class StockCountChangedEto { public Guid ProductId { get; set; } public int NewCount { get; set; } }

await _distributedEventBus.PublishAsync(new StockCountChangedEto { ... });

public class Handler : IDistributedEventHandler, ITransientDependency
{ public async Task HandleEventAsync(StockCountChangedEto e) { } }

> When: state change notifications, loose coupling. Handlers must be idempotent.

Entity Cache

context.Services.AddEntityCache();
private readonly IEntityCache _cache; // _cache.GetAsync(id)

Built-in infrastructure: RabbitMQ, Redis, YARP, OpenIddict.

Best Practices

  1. Choose the right communication (synchronous query / asynchronous notification)
  2. Inter-service → Integration Service
  3. Share only Contracts, idempotent handlers
  4. Database-per-service, cache remote data

Related

  • [Framework](../abp-framework/SKILL.md) · [API](../abp-api/SKILL.md) · [Infrastructure](../abp-infrastructure/SKILL.md) · [Deployment](../abp-deployment/SKILL.md)
  • ABP Docs: https://abp.io/docs/latest/solution-templates/microservice

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.