diff --git a/.editorconfig b/.editorconfig
index 84881bd9..2b850389 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -15,5 +15,5 @@ max_line_length = 1000
[{*.md,*.asciidoc}]
max_line_length = 1000
-[{*.yaml,*.yml}]
+[{*.json,*.yaml,*.yml}]
indent_size = 2
diff --git a/servicebus/emulator/README.md b/servicebus/emulator/README.md
new file mode 100644
index 00000000..bb63d0a3
--- /dev/null
+++ b/servicebus/emulator/README.md
@@ -0,0 +1,58 @@
+
+# Send and receive a message to a local Azure Service Bus Emulator
+
+## Prerequisites
+
+This example assumes you have Docker installed as it uses the Azure Service Bus Emulator Docker image.
+
+## Start the Azure Service Bus Emulator
+
+Make sure Docker Engine is operational in the background. Then, start the Azure Service Bus Emulator using the following command:
+
+```shell
+docker compose -f src/main/docker/docker-compose.yaml up -d
+```
+
+## Send and receive messages to an Azure Service Bus Emulator
+
+First, create the environment variables used to connect to our Azure Service Bus Emulator
+using the command line below:
+
+
+```shell
+ export SERVICE_BUS_QUEUE_CONNECTION_STRING=Endpoint=sb://127.0.0.1;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;
+ export SERVICE_BUS_QUEUE=queue.1
+```
+
+Then compile the code:
+
+```shell
+ mvn clean compile
+```
+
+Listen to the incoming messages with the following command:
+
+```shell
+ mvn exec:java -Preceive
+```
+
+And then send messages:
+
+```shell
+ mvn exec:java -Psend
+```
+
+## Cleanup
+
+```shell
+docker compose -f src/main/docker/docker-compose.yaml down
+```
+
+## References
+
+* [Overview of the Azure Service Bus emulator](https://learn.microsoft.com/en-us/azure/service-bus-messaging/overview-emulator)
+* [Test locally by using the Azure Service Bus emulator](https://learn.microsoft.com/en-us/azure/service-bus-messaging/test-locally-with-service-bus-emulator?tabs=docker-linux-container)
+* [Azure Service Bus emulator config file](https://github.com/Azure/azure-service-bus-emulator-installer/blob/main/ServiceBus-Emulator/Config/Config.json)
+* [Simple Azure Service Bus Emulator – Finally Here!](https://devopsifyme.com/simple-azure-service-bus-emulator-finally-here)
+* [Azure SQL Edge Docker image](https://hub.docker.com/r/microsoft/azure-sql-edge)
+* [Emulator connection string support](https://github.com/Azure/azure-sdk-for-java/issues/38735)
diff --git a/servicebus/emulator/pom.xml b/servicebus/emulator/pom.xml
new file mode 100644
index 00000000..6967c8de
--- /dev/null
+++ b/servicebus/emulator/pom.xml
@@ -0,0 +1,74 @@
+
+
+
+ 4.0.0
+
+ examples.azure.servicebus
+ project
+ 1-SNAPSHOT
+
+ servicebus-emulator
+ jar
+ Azure Service Bus :: Send and receive message using the Azure Service Bus Emulator
+
+
+
+
+ com.azure
+ azure-sdk-bom
+ ${azure.bom.version}
+ pom
+ import
+
+
+
+
+
+
+ com.azure
+ azure-messaging-servicebus
+
+
+ org.slf4j
+ slf4j-simple
+ 1.7.30
+
+
+
+
+ emulator
+
+
+
+ receive
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 3.5.0
+
+ examples.azure.servicebus.emulator.ReceiveMessage
+
+
+
+
+
+
+ send
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 3.5.0
+
+ examples.azure.servicebus.emulator.SendMessage
+
+
+
+
+
+
+
+
diff --git a/servicebus/emulator/src/main/docker/.env b/servicebus/emulator/src/main/docker/.env
new file mode 100644
index 00000000..0204055c
--- /dev/null
+++ b/servicebus/emulator/src/main/docker/.env
@@ -0,0 +1,2 @@
+ACCEPT_EULA=Y
+MSSQL_SA_PASSWORD=myadmin!psswd246
diff --git a/servicebus/emulator/src/main/docker/config.json b/servicebus/emulator/src/main/docker/config.json
new file mode 100644
index 00000000..07d81216
--- /dev/null
+++ b/servicebus/emulator/src/main/docker/config.json
@@ -0,0 +1,28 @@
+{
+ "UserConfig": {
+ "Namespaces": [
+ {
+ "Name": "sbemulatorns",
+ "Queues": [
+ {
+ "Name": "queue.1",
+ "Properties": {
+ "DeadLetteringOnMessageExpiration": false,
+ "DefaultMessageTimeToLive": "PT1H",
+ "DuplicateDetectionHistoryTimeWindow": "PT20S",
+ "ForwardDeadLetteredMessagesTo": "",
+ "ForwardTo": "",
+ "LockDuration": "PT1M",
+ "MaxDeliveryCount": 10,
+ "RequiresDuplicateDetection": false,
+ "RequiresSession": false
+ }
+ }
+ ]
+ }
+ ],
+ "Logging": {
+ "Type": "File"
+ }
+ }
+}
diff --git a/servicebus/emulator/src/main/docker/docker-compose.yaml b/servicebus/emulator/src/main/docker/docker-compose.yaml
new file mode 100644
index 00000000..3a097ea9
--- /dev/null
+++ b/servicebus/emulator/src/main/docker/docker-compose.yaml
@@ -0,0 +1,32 @@
+name: microsoft-azure-servicebus-emulator
+services:
+ emulator:
+ container_name: "servicebus-emulator"
+ image: mcr.microsoft.com/azure-messaging/servicebus-emulator:latest
+ pull_policy: always
+ volumes:
+ - "./config.json:/ServiceBus_Emulator/ConfigFiles/Config.json"
+ ports:
+ - "5672:5672"
+ environment:
+ SQL_SERVER: sqledge
+ MSSQL_SA_PASSWORD: ${MSSQL_SA_PASSWORD}
+ ACCEPT_EULA: ${ACCEPT_EULA}
+ depends_on:
+ - sqledge
+ networks:
+ sb-emulator:
+ aliases:
+ - "sb-emulator"
+ sqledge:
+ container_name: "sqledge"
+ image: "mcr.microsoft.com/azure-sql-edge:latest"
+ networks:
+ sb-emulator:
+ aliases:
+ - "sqledge"
+ environment:
+ ACCEPT_EULA: ${ACCEPT_EULA}
+ MSSQL_SA_PASSWORD: ${MSSQL_SA_PASSWORD}
+networks:
+ sb-emulator:
diff --git a/servicebus/emulator/src/main/java/examples/azure/servicebus/emulator/ReceiveMessage.java b/servicebus/emulator/src/main/java/examples/azure/servicebus/emulator/ReceiveMessage.java
new file mode 100644
index 00000000..ee9ccecd
--- /dev/null
+++ b/servicebus/emulator/src/main/java/examples/azure/servicebus/emulator/ReceiveMessage.java
@@ -0,0 +1,45 @@
+package examples.azure.servicebus.emulator;
+
+import com.azure.messaging.servicebus.ServiceBusClientBuilder;
+import com.azure.messaging.servicebus.ServiceBusProcessorClient;
+import com.azure.messaging.servicebus.ServiceBusReceivedMessage;
+
+import java.util.concurrent.TimeUnit;
+
+public class ReceiveMessage {
+
+ private static final String SERVICE_BUS_QUEUE_CONNECTION_STRING = System.getenv("SERVICE_BUS_QUEUE_CONNECTION_STRING");
+ private static final String SERVICE_BUS_QUEUE = System.getenv("SERVICE_BUS_QUEUE");
+
+ private ServiceBusReceivedMessage receivedMessage;
+
+ private boolean processed;
+
+ public void execute() throws Exception {
+ ServiceBusProcessorClient client = new ServiceBusClientBuilder()
+ .connectionString(SERVICE_BUS_QUEUE_CONNECTION_STRING)
+ .processor()
+ .queueName(SERVICE_BUS_QUEUE)
+ .processMessage((context) -> {
+ receivedMessage = context.getMessage();
+ processed = true;
+ })
+ .processError((context) -> {
+ System.err.println(context.getException());
+ processed = true;
+ })
+ .buildProcessorClient();
+
+ client.start();
+ while (!processed) {
+ TimeUnit.SECONDS.sleep(1);
+ }
+ System.out.println("Received a " + receivedMessage.getBody().toString());
+ client.close();
+ }
+
+ public static void main(String[] arguments) throws Exception {
+ ReceiveMessage receiveMessage = new ReceiveMessage();
+ receiveMessage.execute();
+ }
+}
diff --git a/servicebus/emulator/src/main/java/examples/azure/servicebus/emulator/SendMessage.java b/servicebus/emulator/src/main/java/examples/azure/servicebus/emulator/SendMessage.java
new file mode 100644
index 00000000..3c8d2aed
--- /dev/null
+++ b/servicebus/emulator/src/main/java/examples/azure/servicebus/emulator/SendMessage.java
@@ -0,0 +1,27 @@
+package examples.azure.servicebus.emulator;
+
+import com.azure.messaging.servicebus.ServiceBusClientBuilder;
+import com.azure.messaging.servicebus.ServiceBusMessage;
+import com.azure.messaging.servicebus.ServiceBusSenderClient;
+
+import java.time.LocalDateTime;
+
+public class SendMessage {
+
+ private static final String SERVICE_BUS_QUEUE_CONNECTION_STRING = System.getenv("SERVICE_BUS_QUEUE_CONNECTION_STRING");
+ private static final String SERVICE_BUS_QUEUE = System.getenv("SERVICE_BUS_QUEUE");
+
+ public static void main(String[] arguments) {
+ ServiceBusSenderClient senderClient = new ServiceBusClientBuilder()
+ .connectionString(SERVICE_BUS_QUEUE_CONNECTION_STRING)
+ .sender()
+ .queueName(SERVICE_BUS_QUEUE)
+ .buildClient();
+
+ System.out.println("Sending....");
+ senderClient.sendMessage(new ServiceBusMessage("Hello, World! at " + LocalDateTime.now()));
+ System.out.println("Sent a 'Hello, World!' message to " + SERVICE_BUS_QUEUE);
+
+ System.exit(0);
+ }
+}
diff --git a/servicebus/pom.xml b/servicebus/pom.xml
index a761dcda..e1aa8137 100644
--- a/servicebus/pom.xml
+++ b/servicebus/pom.xml
@@ -15,6 +15,7 @@
create
create-queue
+ emulator
jms-to-cosmosdb-springboot-1
jms-to-cosmosdb-springboot-2
jms-to-eventhubs-springboot