Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Micro Service Bundle Laravel Package

micseres/micro-service-bundle

A Laravel/PHP bundle that gathers the essentials for building microservices: service-to-service communication, health checks, and shared configuration helpers. It aims to cut boilerplate so teams can split a monolith into smaller services without rebuilding common plumbing.

View on GitHub
Deep Wiki
Context7

Getting Started

This is a Symfony bundle, not a Laravel package — the first thing to check is whether you are actually in a Symfony (or at least framework-agnostic) codebase. If you are a Laravel developer, you will not be able to php artisan vendor:publish) your way into this; the integration path is either (a) running the underlying components standalone via the Symfony service container, or (b) treating it as reference architecture rather than a dependency. Confirm the framework expectation by reading composer.json (symfony/framework-bundle in require) and the DependencyInjection/ directory.

Assuming a Symfony host:

  1. composer require micseres/micro-service-bundle
  2. Register the bundle in config/bundles.php:
    return [
        // ...
        Micseres\MicroServiceBundle\MicroServiceBundle::class => ['all' => true],
    ];
    
  3. Inspect DependencyInjection/Configuration.php (or the Configuration class referenced by the extension) to see what config keys exist — with 2 stars and no published docs, this file is the documentation.
  4. Import the bundle config in config/packages/micro_service.yaml with the minimum required keys you find there.
  5. Run bin/console debug:container --tag=<any tags you saw in the extension> to see which services the bundle registers.

First use case: wrap a single outbound call to another service behind the bundle's client (or service-registry lookup) and get one successful round trip in a test environment. Do not attempt to wire up the full mesh on day one — validate that the bundle's container wiring boots and that one client call resolves before scaling out.

Where to look first:

  • README.md — likely thin; treat as a hint, not a spec.
  • DependencyInjection/Configuration.php — the real API surface.
  • Resources/config/services.* — the actual service definitions and their tags.
  • Tests/ — if present, these are your executable spec.

Implementation Patterns

Service registration as boot-time side effect. Typical for bundles in this space: the bundle registers itself with a registry (Consul, etcd, a custom registry endpoint) using a KernelEvents::REQUEST or console-command hook. Keep registration idempotent and guard it behind %kernel.debug% or an explicit enabled flag so local dev doesn't pollute the registry.

Inter-service client injection. Rather than new HttpClient() at call sites, inject the bundle-provided client interface. Prefer constructor injection with an interface, not the concrete class, so you can swap in a fake in tests:

final class InventoryGateway
{
    public function __construct(private readonly RemoteCallerInterface $client) {}
}

Config-per-environment. Put registry URLs, timeouts, and retry counts in config/packages/{dev,test,prod}/micro_service.yaml variants. Bundle config from Configuration.php is usually normalized into parameters you can override — don't hardcode anything in PHP.

Circuit breaker / retry wrapping. If the bundle exposes a decorator or middleware hook, layer retries around idempotent calls only (GET, PUT). Non-idempotent POSTs to downstream services should get timeouts but not blind retries.

Health-check + discovery in one. A common pattern: expose a /health endpoint and let the bundle (or a small listener you wire yourself) report readiness. If the bundle doesn't ship one, write a HealthChecker implementing the bundle's interface and tag it — this is the cleanest extension point most bundles like this leave open.

Testing pattern. Because dependents are zero, expect no community fixtures. Write a MicroServiceKernelTestCase extension in your app that boots the bundle with a stub registry client so your suite doesn't require a real discovery server.

Gotchas and Tips

Framework mismatch is the biggest one. If you are genuinely in Laravel, this bundle will not install cleanly (it depends on Symfony's HttpKernel / DI). Either run a hybrid with a Symfony component sub-application, or extract the parts you need. Do not fight Composer.

Zero dependents means zero battle-testing. Pin the version explicitly ("micseres/micro-service-bundle": "0.1.*") and read the CHANGELOG before every composer update. A single maintainer with 2 stars can ship breaking changes in a patch bump.

Configuration.php is often under-documented. Missing defaultValue() calls will surface as "Option x must be configured" at boot. Grep for cannotBeEmpty() and isRequired() to find mandatory keys fast.

Container caching hides config errors. After editing bundle config, run bin/console cache:clear --env=prod — dev cache can mask stale services.yaml registrations, especially when the bundle uses load() with a glob.

Debugging registration/discovery. If calls fail silently, check debug:event-dispatcher for kernel listeners the bundle added; a listener throwing inside REQUEST may be swallowed if it runs after the response is sent. Add a try/catch and log at the listener boundary.

Extension points to verify before building on them:

  • Interface bindings in Resources/config/services.xml (alias definitions are your override hooks).
  • Compiler passes — if the bundle runs one, it may reorder or reject your service tags.
  • Whether the client is final — if so, wrap rather than extend.

Timeouts over retries. Default timeouts in bundles like this are frequently absent. Set them explicitly in config; a hung downstream call with no timeout will take out your worker pool long before any retry logic matters.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin