<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: codebodhi</title>
    <description>The latest articles on DEV Community by codebodhi (@code_bodhi_39468a1347cb4f).</description>
    <link>https://dev.to/code_bodhi_39468a1347cb4f</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3053952%2Ff3b2950f-b733-4ed3-b152-8043f8823199.png</url>
      <title>DEV Community: codebodhi</title>
      <link>https://dev.to/code_bodhi_39468a1347cb4f</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/code_bodhi_39468a1347cb4f"/>
    <language>en</language>
    <item>
      <title>MockGenServer – Instant Mock Responses from API Specs</title>
      <dc:creator>codebodhi</dc:creator>
      <pubDate>Mon, 01 Sep 2025 05:35:40 +0000</pubDate>
      <link>https://dev.to/code_bodhi_39468a1347cb4f/mockgenserver-instant-mock-responses-from-api-specs-3goo</link>
      <guid>https://dev.to/code_bodhi_39468a1347cb4f/mockgenserver-instant-mock-responses-from-api-specs-3goo</guid>
      <description>&lt;p&gt;Front-end and back-end teams often need to continue building while the real API isn’t ready. &lt;a href="https://mockgen.codebodhi.com" rel="noopener noreferrer"&gt;&lt;strong&gt;MockGenServer&lt;/strong&gt;&lt;/a&gt; lets you upload an API spec and instantly get live mock endpoints — no local setup, no throwaway servers. Just register, upload, and start testing!&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Register for an API Key&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Click the “Get API Key” button on the &lt;a href="https://mockgen.codebodhi.com" rel="noopener noreferrer"&gt;home page&lt;/a&gt;. This key will authenticate your mock requests.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Upload Your OpenAPI Spec&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Upload your spec (YAML or JSON). Once uploaded, the server generates live endpoints immediately.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Use the Mock Endpoints&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All requests must include your API key in the headers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt; GET https://mockgen.codebodhi.com/mocks/alerts
 x-api-key: YOUR_API_KEY_HERE
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Explore Available Endpoints&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After upload, the page lists all endpoints from your spec. Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET https://mockgen.codebodhi.com/mocks/alerts
GET https://mockgen.codebodhi.com/mocks/alerts/active
GET https://mockgen.codebodhi.com/mocks/alerts/active/count
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why &lt;a href="https://mockgen.codebodhi.com" rel="noopener noreferrer"&gt;MockGenServer&lt;/a&gt;?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Front-end and back-end teams can continue work without waiting for the real API.&lt;/li&gt;
&lt;li&gt;No Docker, no local server setup—completely in-browser and cloud-hosted.&lt;/li&gt;
&lt;li&gt;Live endpoints immediately available from your OpenAPI spec.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Try it now: &lt;a href="https://mockgen.codebodhi.com" rel="noopener noreferrer"&gt;https://mockgen.codebodhi.com&lt;/a&gt;&lt;/strong&gt;
&lt;/h2&gt;

</description>
      <category>webdev</category>
      <category>api</category>
      <category>mocking</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Java SQS Listener: A Minimal, High-Performance Library for Polling AWS SQS</title>
      <dc:creator>codebodhi</dc:creator>
      <pubDate>Sat, 12 Jul 2025 20:05:15 +0000</pubDate>
      <link>https://dev.to/code_bodhi_39468a1347cb4f/java-sqs-listener-a-minimal-high-performance-library-for-polling-aws-sqs-2pc</link>
      <guid>https://dev.to/code_bodhi_39468a1347cb4f/java-sqs-listener-a-minimal-high-performance-library-for-polling-aws-sqs-2pc</guid>
      <description>&lt;p&gt;🤔 &lt;strong&gt;The Problem With Polling SQS in Java&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Polling messages from Amazon SQS seems simple — until it’s not. You need to continuously fetch messages, process them concurrently, delete the successful ones, and retry failures with appropriate delays. Getting this right, especially at scale, means dealing with multithreading, visibility timeouts, and reliability — often with verbose or heavyweight tooling.&lt;/p&gt;

&lt;p&gt;Libraries like Spring’s SQS support exist, but they come with trade-offs: framework lock-in, complex dependency graphs, and upgrade pains that stall your agility.&lt;/p&gt;

&lt;p&gt;That’s exactly why I built java-sqs-listener — a small, focused library designed for reliability without the bloat.&lt;/p&gt;

&lt;p&gt;🚀 &lt;strong&gt;Designed for Simplicity and Performance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/codebodhi/java-sqs-listener" rel="noopener noreferrer"&gt;java-sqs-listener&lt;/a&gt;&lt;/strong&gt; is a lightweight (just 16 KB) Java library for polling Amazon SQS messages with minimal setup and maximum flexibility. It’s Java 8+ compatible, framework-agnostic, and battle-tested in real-world production environments.&lt;/p&gt;

&lt;p&gt;🔍 &lt;strong&gt;What Makes It Stand Out&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;Lightweight&lt;/strong&gt;&lt;br&gt;
Just 16 KB — ideal for containers, serverless, or any setup where lean is better.&lt;/p&gt;

&lt;p&gt;☕ &lt;strong&gt;Java 8+ Compatible&lt;/strong&gt;&lt;br&gt;
Works seamlessly with Java 8 and up — no need to upgrade your runtime.&lt;/p&gt;

&lt;p&gt;🧩 &lt;strong&gt;Framework-Agnostic&lt;/strong&gt;&lt;br&gt;
Integrates with any Java application. Spring, Jakarta EE, Guice, or plain old Java — no framework lock-in.&lt;/p&gt;

&lt;p&gt;⚙️ &lt;strong&gt;Minimal Setup&lt;/strong&gt;&lt;br&gt;
Start polling with just a queue name. Everything else is configurable, but optional.&lt;/p&gt;

&lt;p&gt;♻️ &lt;strong&gt;Built-In Reliability&lt;/strong&gt;&lt;br&gt;
Automatically batches and deletes successful messages. Failed messages are retried with backoff.&lt;/p&gt;

&lt;p&gt;🛠️ &lt;strong&gt;Customizable and Extensible&lt;/strong&gt;&lt;br&gt;
Control concurrency, polling frequency, visibility timeout — and even plug in your own SqsClient.&lt;/p&gt;

&lt;p&gt;🧪 &lt;strong&gt;Production-Proven&lt;/strong&gt;&lt;br&gt;
Validated with Testcontainers and hardened in a high-throughput Spring Boot app on AWS EC2.&lt;/p&gt;

&lt;p&gt;No magic, no bloat. Just a small, robust utility that does one thing — and does it well.&lt;/p&gt;

&lt;p&gt;🔧 &lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Available on Maven Central:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Maven&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;
 &amp;lt;groupId&amp;gt;com.codebodhi&amp;lt;/groupId&amp;gt;
 &amp;lt;artifactId&amp;gt;java-sqs-listener&amp;lt;/artifactId&amp;gt;
 &amp;lt;version&amp;gt;2.10.0&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Gradle&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;implementation 'com.codebodhi:java-sqs-listener:2.10.0'

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🛠 &lt;strong&gt;Example Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Minimal Plain Java Setup&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;new SqsListener("my-queue") {
    @Override
    public void process(String message) {
        // handle message
        System.out.println("Received: " + message);
    }
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;With Custom Configuration&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SqsListenerConfig config = SqsListenerConfig.builder()
    .parallelism(5)
    .pollingFrequency(Duration.ofSeconds(5))
    .visibilityTimeout(Duration.ofSeconds(60))
    .build();

new SqsListener("my-queue", config) {
    @Override
    public void process(String message) {
        // handle message
    }
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;☕️ &lt;strong&gt;Spring Integration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Just define your config as a Spring bean:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Configuration
public class SqsListenerConfiguration {
    @Bean("mySqsListenerConfig")
    public SqsListenerConfig config() {
        return SqsListenerConfig.builder()
            .parallelism(5)
            .pollingFrequency(Duration.ofSeconds(5))
            .visibilityTimeout(Duration.ofSeconds(60))
            .build();
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then wire up a Spring service that extends SqsListener:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Service
public class MySqsListener extends SqsListener {
    public MySqsListener(
        @Value("${my-queue}") String queueName,
        @Qualifier("mySqsListenerConfig") SqsListenerConfig config
    ) {
        super(queueName, config);
    }

    @Override
    public void process(String message) {
        // process message
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔍 &lt;strong&gt;Want to see it all in action?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Check out this fully working example on GitHub:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/codebodhi/java-sqs-listener-springboot-example" rel="noopener noreferrer"&gt;java-sqs-listener-springboot-example&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🙌 &lt;strong&gt;Wrap-Up&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you’re building Java applications that polls AWS SQS and want a clean, dependency-free solution — you might find java-sqs-listener just what you need.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/codebodhi/java-sqs-listener" rel="noopener noreferrer"&gt;View the GitHub repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📦 &lt;a href="https://central.sonatype.com/artifact/com.codebodhi/java-sqs-listener/2.10.0" rel="noopener noreferrer"&gt;Check it out on Maven Central&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📂 &lt;a href="https://github.com/codebodhi/java-sqs-listener-springboot-example" rel="noopener noreferrer"&gt;Explore the Spring Boot Example&lt;/a&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>aws</category>
      <category>sqs</category>
      <category>springboot</category>
    </item>
  </channel>
</rss>
