Describe the bug
Hi, I am using Azure Communicaton Service Job Router Java SDK, when I tried to create the router queue, store the queue id inside db and get the router queue via the queue id stored inside db, it hits deserialize issue for JobValue. I expect to be able to get the queue and proceed with the job assignment. This issue seems occurred for RouterWorker, RouterJob and other classes which used RouterValue. May I know is this an issue for job router java sdk or I do any mistake?
Exception or Stack Trace
java.io.UncheckedIOException: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of com.azure.communication.jobrouter.models.RouterValue
(although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('Queue240624081839523')
at [Source: (byte[])"{"id":"Queue240624081839523","distributionPolicyId":"Policy240624081839523","labels":{"Id":"Queue240624081839523"},"etag":""0200df90-0000-1100-0000-6678bb620000""}"; line: 1, column: 92] (through reference chain: com.azure.communication.jobrouter.models.RouterQueue["labels"]->java.util.LinkedHashMap["Id"])
at com.azure.core.implementation.serializer.DefaultJsonSerializer.deserializeFromBytes(DefaultJsonSerializer.java:34) ~[azure-core-1.49.0.jar:1.49.0]
at com.azure.core.implementation.util.FluxByteBufferContent.toObject(FluxByteBufferContent.java:99) ~[azure-core-1.49.0.jar:1.49.0]
at com.azure.core.util.BinaryData.toObject(BinaryData.java:1116) ~[azure-core-1.49.0.jar:1.49.0]
at com.azure.core.util.BinaryData.toObject(BinaryData.java:927) ~[azure-core-1.49.0.jar:1.49.0]
at com.azure.communication.jobrouter.JobRouterAdministrationClient.getQueue(JobRouterAdministrationClient.java:1790) ~[azure-communication-jobrouter-1.1.4.jar:1.1.4]
at com.communication.service.jobrouter.JobRouterSettingServiceImpl.getRouterQueue(JobRouterSettingServiceImpl.java:90) ~[communication-service.jar:na]
at com.communication.service.jobrouter.JobRouterSettingServiceImpl.createNewRouterWorker(JobRouterSettingServiceImpl.java:217) ~[communication-service.jar:na]
at com.communication.service.jobrouter.JobRouterSettingServiceImpl.findRouterWorker(JobRouterSettingServiceImpl.java:206) ~[communication-service.jar:na]
at com.communication.service.jobrouter.JobRouterSettingServiceImpl.deregisterWorker(JobRouterSettingServiceImpl.java:165) ~[communication-service.jar:na]
at com.communication.service.jobrouter.JobRouterSettingServiceImpl.updateWorkerAvailability(JobRouterSettingServiceImpl.java:76) ~[communication-service.jar:na]
at com.communication.service.profile.ProfileNameServiceImpl.updateProfileOnlineStatus(ProfileNameServiceImpl.java:115) ~[communication-service.jar:na]
To Reproduce
Steps to reproduce the behavior:
- Import Job Router java sdk dependency
- Create a new router queue
- Get router queue via the queue id
Code Snippet
Create router queue:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyMMddHHmmssSSS"); String routerQueueId = "Queue".concat(simpleDateFormat.format(new Date())); String distributionPolicyId = "Policy".concat(simpleDateFormat.format(new Date())); DistributionPolicy distributionPolicy = createDistributionPolicy(distributionPolicyId); CreateQueueOptions createQueueOptions = new CreateQueueOptions(routerQueueId, distributionPolicyId); jobRouterAdministrationClient.createQueue(createQueueOptions);
Get router queue:
if (!StringUtils.isEmpty(routerQueueId)) { sql routerQueue = jobRouterAdministrationClient.getQueue(routerQueueId); }
Expected behavior
The queue seems to be created successfully, but when I try to get via the queue id, it hits deserialize issue. I expect to be able to get the queue and proceed with the job assignment.
Setup (please complete the following information):
- OS: Mac
- IDE: IntelliJ
- Library/Libraries: com.azure:azure-communication-jobrouter:1.1.4
- Java version: 17
- App Server/Environment: Tomcat
- Frameworks: Springboot
Additional context
If this is an issue, what will be the expected date to solve? Is there any temporary solution for this?
Do this latest commit for Job Router solved this isssue?
https://github.com/Azure/azure-sdk-for-java/commit/0a1712a2801bdfbc58b9b03d219104e429122346#diff-fec1f4971405d5fc5cc800e9ffb3c9256d32708158965fab322f6728be5a4652