# Cannot resolve method subscribeAsync / unsubscribeAsync

**URL:** <https://forum.inductiveautomation.com/t/cannot-resolve-method-subscribeasync-unsubscribeasync/67785>\
**Category:** Module Development\
**Created:** [December 19, 2022, 2:18pm UTC](https://forum.inductiveautomation.com/t/cannot-resolve-method-subscribeasync-unsubscribeasync/67785 "2022-12-19T14:18:09Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ha99](https://avatars.discourse-cdn.com/v4/letter/h/7feea3/32.png) [@Ha99](https://forum.inductiveautomation.com/u/Ha99)\
**Post date:** [December 19, 2022, 2:18pm UTC](https://forum.inductiveautomation.com/t/cannot-resolve-method-subscribeasync-unsubscribeasync/67785/1 "2022-12-19T14:18:10Z")

</div>

I use :  
subscribeAsync​(TagPath tagPath, TagChangeListener listener)  
But when i test to use  
subscribeAsync​(getTagPaths(), getListeners())  
I have this error : Cannot resolve method 'subscribeAsync(List, List)'  
getTagPaths() return List and getListeners() return List  
TagChangeSDK implements TagChangeListener

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [December 19, 2022, 2:20pm UTC](https://forum.inductiveautomation.com/t/cannot-resolve-method-subscribeasync-unsubscribeasync/67785/2 "2022-12-19T14:20:20Z")

</div>

Seems pretty obvious. You will have to loop over the `getTagPath()` result and call subscribe for each one.

---

<div class="post-metadata">

**Author:** ![Ha99](https://avatars.discourse-cdn.com/v4/letter/h/7feea3/32.png) [@Ha99](https://forum.inductiveautomation.com/u/Ha99)\
**Post date:** [December 19, 2022, 2:31pm UTC](https://forum.inductiveautomation.com/t/cannot-resolve-method-subscribeasync-unsubscribeasync/67785/3 "2022-12-19T14:31:45Z")

</div>

yes, that's what I do now, but I would like to use getTagPath() as it is a List, without going through a loop if it's possible 🙂

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/2/d/2dd7eef41070098af31b66261fcdba21f0ba80ec.png)

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [December 19, 2022, 3:08pm UTC](https://forum.inductiveautomation.com/t/cannot-resolve-method-subscribeasync-unsubscribeasync/67785/4 "2022-12-19T15:08:33Z")

</div>

If the interface doesn't have a method that takes a list, then no, you cannot avoid the loop. 🤷‍♂️

---

<div class="post-metadata">

**Author:** ![Ha99](https://avatars.discourse-cdn.com/v4/letter/h/7feea3/32.png) [@Ha99](https://forum.inductiveautomation.com/u/Ha99)\
**Post date:** [December 19, 2022, 3:20pm UTC](https://forum.inductiveautomation.com/t/cannot-resolve-method-subscribeasync-unsubscribeasync/67785/5 "2022-12-19T15:20:58Z")

</div>

No but the interface have a method that take a list :

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/2/3/23dba557a9ae71234c689ca64b98b0338dce05d6.png)

[https://files.inductiveautomation.com/sdk/javadoc/ignition81/8.1.20/com/inductiveautomation/ignition/common/tags/model/TagManager.html#subscribeAsync(java.util.List,java.util.List)](https://files.inductiveautomation.com/sdk/javadoc/ignition81/8.1.20/com/inductiveautomation/ignition/common/tags/model/TagManager.html#subscribeAsync(java.util.List,java.util.List))

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [December 19, 2022, 3:26pm UTC](https://forum.inductiveautomation.com/t/cannot-resolve-method-subscribeasync-unsubscribeasync/67785/6 "2022-12-19T15:26:45Z")

</div>

Hmm. Point. Not sure what's going on.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [December 19, 2022, 7:34pm UTC](https://forum.inductiveautomation.com/t/cannot-resolve-method-subscribeasync-unsubscribeasync/67785/7 "2022-12-19T19:34:26Z")

</div>

Are you sure you're compiling against the right version of the SDK?

---

<div class="post-metadata">

**Author:** ![Ha99](https://avatars.discourse-cdn.com/v4/letter/h/7feea3/32.png) [@Ha99](https://forum.inductiveautomation.com/u/Ha99)\
**Post date:** [December 23, 2022, 2:09pm UTC](https://forum.inductiveautomation.com/t/cannot-resolve-method-subscribeasync-unsubscribeasync/67785/8 "2022-12-23T14:09:49Z")

</div>

I corrected this but currently I'm trying to pass the context for another class in order to launch other processes and read "readAsync" tags but I can't Is there a specific class for that or a link with RPC that I didn't really understand ?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [December 23, 2022, 2:19pm UTC](https://forum.inductiveautomation.com/t/cannot-resolve-method-subscribeasync-unsubscribeasync/67785/9 "2022-12-23T14:19:53Z")

</div>

> [@Ha99](#):
>
> other processes

Processes outside of Ignition have no access to any of this. Or did you mean threads?

If you need to offer external access, you have two options:

- Implement a servlet that will integrate with the gateway's jetty instance, or

- Create a listening socket that will accept connections and spawn threads for them and use any protocol you wish to implement.

---

<div class="post-metadata">

**Author:** ![Ha99](https://avatars.discourse-cdn.com/v4/letter/h/7feea3/32.png) [@Ha99](https://forum.inductiveautomation.com/u/Ha99)\
**Post date:** [December 23, 2022, 2:23pm UTC](https://forum.inductiveautomation.com/t/cannot-resolve-method-subscribeasync-unsubscribeasync/67785/10 "2022-12-23T14:23:47Z")

</div>

No it's inside ignitin ,I have another class that will be in the ignition module that I call with tagchange listener, and I want to read some tags 🙂

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [December 23, 2022, 2:27pm UTC](https://forum.inductiveautomation.com/t/cannot-resolve-method-subscribeasync-unsubscribeasync/67785/11 "2022-12-23T14:27:00Z")

</div>

If you just want to read some tags, why do you need a listener?

Please share more of the architecture you are trying to achieve.

---

<div class="post-metadata">

**Author:** ![Ha99](https://avatars.discourse-cdn.com/v4/letter/h/7feea3/32.png) [@Ha99](https://forum.inductiveautomation.com/u/Ha99)\
**Post date:** [December 23, 2022, 2:30pm UTC](https://forum.inductiveautomation.com/t/cannot-resolve-method-subscribeasync-unsubscribeasync/67785/12 "2022-12-23T14:30:38Z")

</div>

I supervise a single tag, and when the latter changes to a specific value I launch a specific calculation and the latter needs to read specific tag values ​​for its calculation.  
For that I need to launch the calculation in this class with a reading of the tags and I need the context ?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [December 23, 2022, 2:34pm UTC](https://forum.inductiveautomation.com/t/cannot-resolve-method-subscribeasync-unsubscribeasync/67785/13 "2022-12-23T14:34:40Z")

</div>

Ok. Include the context in the listener's constructor, then. Or perhaps just hand off the TagManager. The listener can do the calculations if they aren't too long. (Few milliseconds.)

---

<div class="post-metadata">

**Author:** ![Ha99](https://avatars.discourse-cdn.com/v4/letter/h/7feea3/32.png) [@Ha99](https://forum.inductiveautomation.com/u/Ha99)\
**Post date:** [December 23, 2022, 2:50pm UTC](https://forum.inductiveautomation.com/t/cannot-resolve-method-subscribeasync-unsubscribeasync/67785/14 "2022-12-23T14:50:52Z")

</div>

I need to do something like this :

> [@GatewayContext Tag Manager?](https://forum.inductiveautomation.com/t/gatewaycontext-tag-manager/48953/3):
>
> It shouldn’t even be possible to code against the implementation because it’s not part of the SDK API.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/b/7/b7715a84ec054caad9037d038811460f2e35e275.png)

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [December 23, 2022, 4:11pm UTC](https://forum.inductiveautomation.com/t/cannot-resolve-method-subscribeasync-unsubscribeasync/67785/15 "2022-12-23T16:11:28Z")

</div>

I guess I'm just not seeing enough. You have a null pointer exception on your listener's line 31. Follow that clue.
